Pardus'a PowerShell Kurma (Doğrudan Windows Yönetimi)

Pardus üzerinden Windows sunucularını ve istemcilerini doğrudan yönetmek, heterojen ağlarda çalışan sistem yöneticileri için büyük bir operasyonel avantaj sağlar.


Geçmişte Linux'tan Windows'a bağlanmak için karmaşık WinRM (Windows Remote Management) ve Kerberos yapılandırmaları gerekirdi. Günümüzde ise SSH üzerinden PowerShell Remoting (Uzaktan Yönetim) standart hale gelmiştir. Bu yöntem; şifreli, hızlı ve çapraz platform (Linux-Windows arası) tam uyumlu bir yönetim sunar.


Giriş

Linux ve Windows uzun yıllar tamamen farklı yönetim araçlarına sahipti. Linux'ta Bash, Windows'ta CMD ve daha sonra PowerShell kullanılıyordu.

Ancak Microsoft, PowerShell'i açık kaynak (Open Source) yaptıktan sonra artık;

  • Pardus

  • Debian

  • Ubuntu

  • Fedora

  • Kali Linux

  • macOS

üzerinde de çalışabilmektedir.

Bu sayede Pardus bilgisayardan;

  • Windows Server

  • Windows 10

  • Windows 11

  • Hyper-V

  • Active Directory

  • Exchange

  • Microsoft 365

  • Azure

ortamları doğrudan yönetilebilir.


PowerShell Nedir?

PowerShell;

  • Komut satırı (CLI)

  • Script dili

  • Yönetim platformu

  • Otomasyon aracıdır.

Eski CMD'nin yerine geliştirilmiştir.


En büyük özelliği:

Metin değil Nesne (Object) ile çalışmasıdır.

Örneğin:

CMD

dir

çıktısı metindir.

PowerShell

Get-ChildItem

çıktısı ise nesnedir.

Bu nedenle filtreleme inanılmaz kolaydır.


PowerShell Core

Linux üzerinde çalışan sürümün adı

PowerShell 7 (PowerShell Core)

komutu:

pwsh

Artık "powershell" yerine

pwsh

kullanılır.


Pardus Sürümünü Kontrol Edelim

cat /etc/os-release

Örneğin

PRETTY_NAME="Pardus GNU/Linux 25"

Sistem Güncellemesi

sudo apt update

sudo apt upgrade

Gerekli Paketler

sudo apt install -y wget apt-transport-https gnupg curl

PowerShell Kurulum

1. PowerShell Evrensel Arşivini İndirin

Bağımlılık zorunluluğu olmayan sıkıştırılmış sürümü indirin:

wget https://github.com/PowerShell/PowerShell/releases/download/v7.6.3/powershell-7.6.3-linux-x64.tar.gz 

2. Kurulum Dizinini Oluşturun

Sistemde PowerShell için ayrılmış resmi klasör yolunu oluşturun:

sudo mkdir -p /opt/microsoft/powershell/7

3. Arşivi Çıkartın

İndirdiğiniz sıkıştırılmış dosyayı oluşturduğunuz dizine çıkartın:

sudo tar zxf powershell-7.6.3-linux-x64.tar.gz -C /opt/microsoft/powershell/7


4. İzinleri Ayarlayın ve Kısayol Oluşturun

Çalıştırılabilir dosyaya yetki verin ve terminalin herhangi bir yerinden pwsh yazarak açabilmek için sisteme bir kısayol (symlink) ekleyin:

sudo chmod +x /opt/microsoft/powershell/7/pwsh
sudo ln -s /opt/microsoft/powershell/7/pwsh /usr/bin/pwsh


Tebrikler! Bu yöntemle hiçbir bağımlılık hatası almadan PowerShell'i sisteminize entegre etmiş oldunuz. Kurulumu doğrulamak için doğrudan terminale şu komutu yazabilirsiniz:

Kurulum tamamlandıktan sonra

pwsh

çıktı

PowerShell 7.x.x



Çıkış

exit

Sürüm Kontrolü

$PSVersionTable

Örnek

Name Value

PSVersion 7.5.x

PSEdition Core

Platform Unix

Yardım Sistemi

Get-Help

Belirli komut

Get-Help Get-Process

Detaylı yardım

Get-Help Get-Service -Full

Örnekler

Get-Help Get-Service -Examples

Alias Yapısı

Linux

ls

PowerShell

ls

aslında

Get-ChildItem

komutudur.

Kontrol

Get-Alias ls

Linux Komutları PowerShell İçinde

PowerShell Linux komutlarını çalıştırabilir.

ls

pwd

cat

grep

Değişkenler

$isim="Ali"

$yas=25

Göster

$isim

Nesneler

Get-Date

çıktısı

Sunday

Month

Year

Ticks

Hour

İstediğimizi alabiliriz.

(Get-Date).Year

veya

(Get-Date).DayOfWeek

Pipeline

Linux

ps aux | grep ssh

PowerShell

Get-Process | Where-Object CPU -gt 50

Windows Bilgisayara Uzaktan Bağlanma

SSH servisi açıksa

Enter-PSSession -HostName 192.168.1.20 -UserName administrator

veya

Enter-PSSession -HostName sunucu.local -UserName administrator

Çıkış

Exit-PSSession

Tek Komut Çalıştırma

Invoke-Command -HostName 192.168.1.20 `
-UserName administrator `
-ScriptBlock {

hostname

ipconfig

Get-Service

}

Çoklu Sunucu Yönetimi

$servers=@(

"192.168.1.20"

"192.168.1.21"

"192.168.1.22"

)

Döngü

foreach($s in $servers){

Invoke-Command -HostName $s `
-UserName administrator `
-ScriptBlock {

hostname

}

}

Dosya Kopyalama

Windows →    Pardus

scp administrator@192.168.1.20:C:\rapor.txt .

Pardus →    Windows

scp rapor.txt administrator@192.168.1.20:C:\Temp\

Active Directory Yönetimi

SSH üzerinden bağlandıktan sonra

Import-Module ActiveDirectory

Kullanıcılar

Get-ADUser -Filter *

Gruplar

Get-ADGroup -Filter *

Bilgisayarlar

Get-ADComputer -Filter *

Hyper-V Yönetimi

Get-VM

Başlat

Start-VM Ubuntu01

Durdur

Stop-VM Ubuntu01

Windows Servisleri

Get-Service

Spooler

Restart-Service Spooler

Olay Günlüğü

Get-WinEvent -LogName Security

Son 20 kayıt

Get-WinEvent Security -MaxEvents 20

Disk Bilgisi

Get-Disk

Ağ Bilgisi

Get-NetIPAddress

Firewall

Get-NetFirewallRule

Çalışan İşlemler

Get-Process

En fazla RAM kullanan

Get-Process |
Sort WorkingSet -Descending |
Select -First 10

Windows Güncelleme

PSWindowsUpdate kurulu ise

Get-WindowsUpdate

Kur

Install-WindowsUpdate

Güvenlik Açısından Avantajları

✅ SSH üzerinden güvenli bağlantı

✅ Şifre yerine Anahtar (Key) kullanımı

✅ Çoklu sunucu yönetimi

✅ Script otomasyonu

✅ Loglama

✅ Merkezi yönetim

✅ Active Directory desteği

✅ Hyper-V desteği

✅ Azure desteği


En Faydalı Cmdlet'ler

CmdletGörev
Get-Process        İşlemleri listeler
Get-Service        Servisleri gösterir
Get-EventLog        Logları gösterir
Get-WinEvent        Yeni log sistemi
Get-ChildItem        Dosyalar
Get-Item        Dosya bilgisi
Copy-Item        Kopyalama
Remove-Item        Silme
Test-Connection        Ping
Get-NetIPAddress        Ağ bilgisi
Get-ComputerInfo        Sistem bilgisi
Restart-Computer        Yeniden başlat
Stop-Service        Servis durdur
Start-Service        Servis başlat

Gerçek Hayatta Kullanım Senaryoları

Senaryo 1: Laboratuvardaki Tüm Bilgisayarların Yeniden Başlatılması

Invoke-Command -HostName 192.168.1.20,192.168.1.21,192.168.1.22 `
-UserName administrator `
-ScriptBlock {
    Restart-Computer -Force
}

Senaryo 2: Disk Doluluk Kontrolü

Invoke-Command -HostName 192.168.1.20 `
-UserName administrator `
-ScriptBlock {
    Get-PSDrive -PSProvider FileSystem
}

Senaryo 3: Çalışmayan Servisleri Listeleme

Invoke-Command -HostName 192.168.1.20 `
-ScriptBlock {
    Get-Service | Where-Object Status -eq Stopped
}

Senaryo 4: Güvenlik Günlüğünde Başarısız Oturum Açma Denemeleri

Invoke-Command -HostName 192.168.1.20 `
-ScriptBlock {
    Get-WinEvent -FilterHashtable @{
        LogName='Security'
        Id=4625
    } -MaxEvents 20
}

En İyi Uygulamalar (Best Practices)

  • PowerShell'i her zaman en güncel sürümde kullanın.

  • Parola yerine SSH anahtar tabanlı kimlik doğrulamayı tercih edin.

  • Uzaktan yönetim için yönetici haklarını yalnızca gerekli hesaplara verin.

  • PowerShell betiklerini dijital olarak imzalayarak çalıştırmayı değerlendirin.

  • Start-Transcript ile oturum kayıtlarını tutarak denetlenebilirliği artırın.

  • Uzaktan çalıştırılan komutları mümkün olduğunca sınırlı yetkili hesaplarla yürütün.

  • Düzenli olarak PowerShell modüllerini (Update-Module) ve işletim sistemini güncelleyin.


Sonuç

PowerShell 7 sayesinde Pardus, yalnızca bir Linux istemcisi olmaktan çıkıp Windows istemcileri, Windows Server, Active Directory, Hyper-V ve bulut altyapılarını tek bir komut satırından yönetebilen güçlü bir yönetim platformuna dönüşür. Özellikle okul laboratuvarları, kurum ağları ve karma (Windows + Linux) ortamlarda çalışan sistem yöneticileri için PowerShell; otomasyon, uzaktan yönetim ve merkezi denetim açısından vazgeçilmez bir araçtır.


Yorumlar

Bu blogdaki popüler yayınlar

Android Telefon/Tablet Ekranını Pardus ETAP 23 Yüklü Akıllı Tahtaya Yansıtma

Pardus Etap 23’de Unutulmuş Etap Yetkili Parolasını Sıfırlama

Pardus Etap 23 Yazıcı Kurulumu