Processi
Gestione dei processi con PowerShell.
Get-Process
Get-Process
Get-Process -Name chrome
Get-Process -Name chr*
Get-Process -Id 1234
Get-Process | Sort-Object CPU -Descending | Select-Object -First 10
Get-Process | Sort-Object WorkingSet -Descending | Select-Object -First 10 Name, Id, @{n='MB';e={[math]::Round($_.WorkingSet/1MB)}}
Get-Process -IncludeUserName
Get-Process -Name explorer | Select-Object *
Proprietà utili: Name, Id, CPU (secondi totali di CPU), WorkingSet (memoria in byte), StartTime, Path, Responding, MainWindowTitle.
-IncludeUserName richiede un prompt amministratore.
Trovare processi in particolare
Get-Process | Where-Object { -not $_.Responding }
Get-Process | Where-Object { $_.MainWindowTitle } | Select-Object Name, MainWindowTitle
Get-Process | Where-Object { $_.StartTime -lt (Get-Date).AddDays(-7) }
Get-Process -Name chrome | Measure-Object WorkingSet -Sum
Avviare
Start-Process notepad
Start-Process notepad "C:\file.txt"
Start-Process "C:\Program Files\App\app.exe" -ArgumentList "-p 1"
Start-Process cmd -Verb RunAs
Start-Process powershell -Verb RunAs
Start-Process notepad -Wait
Start-Process notepad -WindowStyle Hidden
Start-Process https://google.com
-Verb RunAsavvia con privilegi elevati (mostra UAC).-Waitattende la chiusura del programma.-PassThrurestituisce l'oggetto processo.
Terminare
Stop-Process -Name notepad
Stop-Process -Name notepad -Force
Stop-Process -Id 1234
Get-Process chrome | Stop-Process
Get-Process | Where-Object { -not $_.Responding } | Stop-Process -Force
Prova prima con -WhatIf:
Get-Process chrome | Stop-Process -WhatIf
Attendere
Wait-Process -Name notepad
Wait-Process -Id 1234 -Timeout 60
Quale processo usa una porta
Get-NetTCPConnection -LocalPort 8080 | Select-Object LocalPort, State, OwningProcess
Get-Process -Id (Get-NetTCPConnection -LocalPort 8080).OwningProcess
Processi per servizio e riga di comando
Get-CimInstance Win32_Process | Select-Object ProcessId, Name, CommandLine
Get-CimInstance Win32_Process -Filter "Name='powershell.exe'" | Select-Object ProcessId, CommandLine
Job in background
Start-Job { Start-Sleep 30; "finito" }
Get-Job
Receive-Job -Id 1
Receive-Job -Id 1 -Keep
Wait-Job -Id 1
Remove-Job -Id 1
I job sono processi di PowerShell in background, utili per operazioni lunghe.
Contatori di prestazione
Get-Counter '\Processor(_Total)\% Processor Time'
Get-Counter '\Memory\Available MBytes'
Get-Counter '\Processor(_Total)\% Processor Time' -SampleInterval 2 -MaxSamples 5