PowerShell ile Windows İşlemlerini Yönetme
PowerShell, yerel veya uzak bir bilgisayardaki işlemleri yönetmek için birçok özelliğe sahiptir. PowerShell'i kullanarak, çalışan işlemlerin bir listesini alabilir, kapatılan bir işlemi askıya alabilir, bir işlemi Windows başlığına göre bulabilir, yeni bir işlemi gizli veya etkileşimli modda çalıştırabilirsiniz, vb.
Windows 10'da kullanılabilir işlem yönetimi cmdlet'lerinin listesini aşağıdaki gibi görüntüleyebilirsiniz:
Get-Command -Noun ProcessGet-Process - çalışan Windows işlemlerinin bir listesini alın;
Start-Process - bir süreç/program başlatın;
-
Stop-Process - süreci zorla durdurun (öldürün);
Debug-Process - bir süreçte hata ayıklayın;
Bekle-İşlemi - işlem bitene kadar bekleyin.
Get-Process: Çalışan İşlemlerin Listesini Alma
Get-Process cmdlet'i, yerel bir bilgisayarda çalışan işlemlerin bir listesini görüntüler.
Varsayılan olarak, çalışan işlemlerin şu özellikleri görüntülenir:
Tutucular - bu işlem tarafından açılan girdi-çıktı dosya tanıtıcılarının (işlemcileri) sayısı;
NPM(K) - disk belleği olmayan bir bellektir (disk belleği olmayan havuz). Bu, diskte asla disk belleğine alınmayan işlem verilerinin boyutudur (KB olarak);
PM(K) - belleğe alınabilecek işlem belleğinin boyutu;
WS(K) - işlem (Çalışma Kümesi) tarafından kullanılan fiziksel belleğin boyutu (KB cinsinden);
-
CPU(s) - işlem tarafından kullanılan bir CPU süresi (tüm CPU'lardaki süre sayılır);
Kimlik - benzersiz işlem tanımlayıcısı;
SI (Oturum Kimliği) - işlem oturum kimliğidir (0, tüm oturumlar için çalışır, 1- ilk oturum açan kullanıcı için çalışır, 2 — ikinci oturum açan kullanıcı için çalışır, vb.);
İşlemAdı
Birden çok işlemin tüm özelliklerini listelemek için:
Get-Process cmd,excel,notep* | Format-List *Yalnızca belirli işlem özelliklerini görüntüleyebilirsiniz, örneğin bir ad (
ProcessName), bir başlangıç zamanı (
StartTime), bir işlem penceresi başlığı (
MainWindowTitle), yürütülebilir bir dosya adı (
Path) ve bir geliştirici adı (
Company
):
Get-Process winword, notep* | Select-Object ProcessName, StartTime, MainWindowTitle, Path, Company|ftGUI ile çalışan kullanıcı işlemlerinin bir listesini görüntülemek için (arka plan ve sistem işlemleri görüntülenmeyecektir):
Get-Process | Where-Object {$_.mainWindowTitle} | Format-Table Id, Name, mainWindowtitleIncludeUserName seçeneğini kullanarak, işlemi başlatan bir kullanıcı adını (sahibi) görüntüleyebilirsiniz:
Get-Process -Name winword -IncludeUserNamekullanma
Where-Object, işlemleri bazı kriterlere göre seçebilirsiniz. Örneğin, 300 MB'ın üzerinde RAM kullanan tüm işlemleri görüntüleyelim, bellek kullanımına göre azalan sırada sıralayalım ve bellek boyutunu KB yerine MB olarak gösterelim:
Get-Process| where-object {$_.WorkingSet -GT 300000*1024}|select processname,@{l="Used RAM(MB)"; e={$_.workingset / 1mb}} |sort "Used RAM(MB)" -DescendingDaha önce de belirttiğimiz gibi, CPU parametresindeki Get-Process cmdlet'i, belirli bir işlemin kullandığı işlemci süresini saniye cinsinden içerir. İşlemler tarafından kullanılan CPU yüzdesini görüntülemek için (Görev Yöneticisine benzer), şu işlevi kullanın:
function Get-CPUUsagePercent
{
$CPUPercent = @{
Name = 'CPUPercent'
Expression = {
$TotalSec = (New-TimeSpan -Start $_.StartTime).TotalSeconds
[Math]::Round( ($_.CPU * 100 / $TotalSec), 2)
}
}
Get-Process | Select-Object -Property Name, $CPUPercent, Description | Sort-Object -Property CPUPercent -Descending | Select-Object -First 20
}
Get-CPUUsagePercentAskıya alınan işlemleri (yanıt vermeyen) bulmak için aşağıdaki komutu çalıştırın:
Get-Process | where-object {$_.Responding -eq $false}İşlemi Başlat, İşlemi Durdur: PowerShell ile İşlemleri Başlatma veya Durdurma
PowerShell kullanarak yeni bir işlem başlatmak için şu komut kullanılır:
Start-Process -FilePath notepadYürütülebilir dosya yoksa
$env:pathortam değişkeni, dosyanın tam yolunu belirtin:
Start-Process -FilePath 'C:\distr\app.exe'Bir programı çalıştırabilir ve ona bağımsız değişkenler iletebilirsiniz:
Start-Process -FilePath ping -ArgumentList "-n 10 10.1.56.21"WindowStyle seçeneğini kullanarak işlem penceresi başlangıç modunu ayarlayabilirsiniz (normal, küçültülmüş, büyütülmüş, gizli). Örneğin, bir programı büyütülmüş bir pencerede çalıştırmak ve işlem bitene kadar beklemek için şu komutu çalıştırın:
Start-Process -FilePath tracert -ArgumentList "10.1.56.21" -wait -windowstyle MaximizedStop-Process cmdlet'ini kullanarak herhangi bir işlemi durdurabilirsiniz. Örneğin, çalışan tüm not defteri işlemlerini kapatmak için:
Stop-Process -Name notepadVarsayılan olarak, bir işlemi sonlandırmayı onaylamanız istenmez. Belirtilen kriterleri karşılayan tüm işlemler durdurulacaktır. Durdurulan işlemleri onaylayabilmek için -Onayla seçeneğini ekleyin:
Stop-Process -Name notepad.exe -ConfirmAyrıca, bir işlemi şu şekilde sonlandırabilirsiniz:
(Get-Process -Name cmd).Kill()PowerShell'den, Windows Process Manager'a yanıt vermeyen tüm uygulamaları durdurmaya zorlayabilirsiniz:
Get-Process | where-object {$_.Responding -eq $false}| Stop-ProcessPowerShell'i kullanarak askıya alınan veya kapatılan bir işlemi otomatik olarak yeniden başlatabilirsiniz.
PowerShell Kullanarak Uzak Bilgisayardaki İşlemleri Yönetin
kullanabilirsiniz
ComputerNameuzak bilgisayarlardaki işlemleri yönetmek için Get-Process cmdlet seçeneği (WinRM etkinleştirilmeli ve yapılandırılmalıdır).
Get-Process -ComputerName srv01, srv02, srv03| Format-Table -Property ProcessName, ID, MachineNameUzak bilgisayarlardaki işlemleri yönetmek için yerleşik Get-Process özellikleriyle ilgileniyoruz. Şurada bulunan PowerShell Uzaktan İletişim özellikleri
Invoke-CommandVe
Enter-PSSessioncmdlet'ler burada kapsanmaz.
Uzak bilgisayardaki bir işlemi sonlandırmak istiyorsanız, İşlemi Durdur cmdlet'inde -BilgisayarAdı parametresinin bulunmadığına dikkat edin. Uzak bilgisayardaki bir işlemi durdurmak için aşağıdaki PowerShell kodunu kullanabilirsiniz:
$RemoteProcess = Get-Process -Name cmd -ComputerName srv01
Stop-Process -InputObject $RemoteProcess





