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 wget apt-transport-https software-properties-common gpg
Microsoft Deposu Eklenmesi
Microsoft resmi deposunu ekleyelim.
Anahtar:
wget https://packages.microsoft.com/config/debian/12/packages-microsoft-prod.deb
Kurulum:
sudo dpkg -i packages-microsoft-prod.deb
Sonra
sudo apt update
PowerShell Kurulumu
sudo apt install powershell
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
| Cmdlet | Gö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-Transcriptile 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.
Bu makalenin devamı niteliğinde şu konular da ayrıntılı olarak ele alınabilir:
Pardus'tan PowerShell Remoting (SSH) ile Windows Yönetimi – 50 Uygulamalı Senaryo
PowerShell ile Active Directory Yönetimi (100+ Komut ve Örnek)
PowerShell Betik Programlama (Script) Eğitimi – Başlangıçtan İleri Seviyeye
PowerShell ile Windows Güvenliği ve Olay Günlüğü (Event Log) Analizi
PowerShell ile Toplu Bilgisayar Yönetimi ve Envanter Otomasyonu
Bölüm 1: Pardus Üzerine PowerShell Kurulumu
Pardus 21 ve 23, Debian (11/12) altyapısını kullanır. Bu nedenle Microsoft'un resmi Debian paket depolarını kullanarak kurulumu güvenli bir şekilde gerçekleştirebiliriz.
1.Bağımlılıkları Yükleyin:İndirme ve sertifika araçları.
Öncelikle sistem depolarınızı güncelleyin ve dışarıdan paket eklemek için gerekli temel araçları kurun. Terminali açıp şu komutları girin:
sudo apt update
sudo apt install -y curl gnupg apt-transport-https wget
2.Microsoft Depo Anahtarını Ekleyin:Debian 11 reposu kullanılır.
Microsoft'un güvenilir paket imza anahtarını ve depo yapılandırmasını sisteminize indirin ve kurun:
wget -q https://packages.microsoft.com/config/debian/11/packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
3.PowerShell'i Kurun:Paket listelerini güncelleyip yüklemeyi tamamlayın.
Yeni eklenen Microsoft deposunu sisteme tanıtmak için listeyi güncelleyin ve PowerShell'i kurun:
sudo apt update
sudo apt install -y powershell
Kurulum tamamlandıktan sonra terminale pwsh yazarak Pardus üzerinde PowerShell ortamına geçiş yapabilirsiniz. Sürüm bilgisini kontrol etmek için $PSVersionTable komutunu kullanabilirsiniz.
Bölüm 2: Windows Hedef Makineyi Hazırlama
Pardus'tan Windows makinesine komut gönderebilmek için hedeflenen Windows sisteminde SSH sunucusunun aktif olması ve varsayılan bağlantı kabuğunun PowerShell olarak ayarlanması gerekir.
Aşağıdaki işlemleri yöneteceğiniz Windows makinesinde, PowerShell'i Yönetici Olarak Çalıştırarak (Run as Administrator) yapmalısınız.
1.OpenSSH Sunucusunu Kurun:Windows'un yerleşik özelliğini aktifleştirin.
Aşağıdaki komut, Windows'un isteğe bağlı özellikleri arasından OpenSSH Server'ı indirip kurar:
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
2.SSH Servisini Başlatın ve Otomatiğe Alın:Makine yeniden başladığında aktif kalması için.
SSH servisinin hemen çalışmasını ve bilgisayar her açıldığında otomatik başlamasını sağlayın:
Start-Service sshd
Set-Service -Name sshd -StartupType 'Automatic'
3.Varsayılan SSH Kabuğunu PowerShell Yapın:Bağlantı sağlandığında CMD yerine PS açılması için.
Pardus'tan bağlandığınızda doğrudan PowerShell komut setine düşmek için Windows Kayıt Defteri'ne (Registry) şu girdiyi ekleyin:
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force
(Not: Eğer Windows makinesinde PowerShell 7 kuruluysa, Value yolunu C:\Program Files\PowerShell\7\pwsh.exe olarak değiştirebilirsiniz.)
Güvenlik duvarınızın (Windows Defender Firewall) 22 numaralı porta (TCP) izin verdiğinden emin olun. OpenSSH Server kurulduğunda bu kural genellikle otomatik olarak eklenir.
Bölüm 3: Pardus'tan Windows'a Bağlanma ve Yönetim
Her iki sistem de hazır olduğuna göre, Pardus makinenizden Windows sunucunuza ilk uzak oturumunuzu başlatabilirsiniz.
Pardus terminalinizi açın ve PowerShell'i başlatın:
pwsh
Windows makinesine SSH tabanlı bir PowerShell oturumu açmak için Enter-PSSession komutunu -HostName parametresi ile kullanın. (Klasik WinRM bağlantılarında -ComputerName kullanılırken, SSH bağlantılarında -HostName kullanılır).
Enter-PSSession -HostName 192.168.1.50 -UserName Administrator
(Buradaki 192.168.1.50 yerine Windows makinesinin IP adresini, Administrator yerine yetkili Windows kullanıcı adınızı yazın.)
İlk bağlantıda SSH parmak izini (fingerprint) kabul etmeniz istenecek, yes yazıp onayladıktan sonra Windows yöneticinizin şifresini girin.
Bağlantı başarılı olduğunda, terminalinizin başındaki imleç [192.168.1.50]: PS C:\Users\Administrator\Documents> şeklinde değişecektir. Artık Get-Process, Restart-Service, Get-EventLog gibi tüm Windows PowerShell komutlarını doğrudan Pardus üzerinden Windows makinesinde çalıştırabilirsiniz. Uzak oturumdan çıkıp Pardus'a geri dönmek için Exit-PSSession yazmanız yeterlidir.
Yorumlar