Servizi
Gestione dei servizi di Windows. Per modificare servizi serve una console avviata come amministratore.
Get-Service
Get-Service
Get-Service -Name Spooler
Get-Service -DisplayName "*stampa*"
Get-Service | Where-Object Status -eq Running
Get-Service | Where-Object { $_.StartType -eq 'Automatic' -and $_.Status -ne 'Running' }
Get-Service -Name Spooler | Select-Object *
Get-Service -ComputerName SERVER01 -Name Spooler
Proprietà principali: Name, DisplayName, Status (Running, Stopped, Paused), StartType (Automatic, Manual, Disabled), DependentServices, ServicesDependedOn.
Avviare, fermare, riavviare
Start-Service Spooler
Stop-Service Spooler
Stop-Service Spooler -Force
Restart-Service Spooler
Suspend-Service Spooler
Resume-Service Spooler
-Force è necessario se il servizio ha servizi dipendenti.
Tipo di avvio
Set-Service -Name Spooler -StartupType Automatic
Set-Service -Name Spooler -StartupType Manual
Set-Service -Name Spooler -StartupType Disabled
Set-Service -Name Spooler -StartupType Automatic -Status Running
Set-Service -Name Spooler -Description "Nuova descrizione"
In Windows PowerShell 5.1 il valore AutomaticDelayedStart non è disponibile in -StartupType: usa sc.exe config nome start= delayed-auto.
Dipendenze
Get-Service Spooler -DependentServices
Get-Service Spooler -RequiredServices
Creare ed eliminare
New-Service -Name "MioServizio" -BinaryPathName "C:\App\servizio.exe" -DisplayName "Mio Servizio" -StartupType Automatic -Description "Descrizione"
Remove-Service -Name "MioServizio"
Remove-Service esiste da PowerShell 6. In Windows PowerShell 5.1: sc.exe delete MioServizio.
Servizio in errore: indagare
Get-Service MioServizio
Get-WinEvent -FilterHashtable @{LogName='System'; ProviderName='Service Control Manager'} -MaxEvents 20
Get-CimInstance Win32_Service -Filter "Name='MioServizio'" | Select-Object Name, State, StartName, PathName, ExitCode
StartName indica l'account con cui gira il servizio; PathName l'eseguibile.
Servizi su più computer
Get-Service -ComputerName PC01, PC02 -Name Spooler
Invoke-Command -ComputerName PC01, PC02 -ScriptBlock { Restart-Service Spooler }
Aspettare lo stato
(Get-Service Spooler).WaitForStatus('Running', '00:00:30')
Alternative classiche
sc.exe query spooler
net start
In PowerShell sc è un alias di Set-Content: per lo strumento classico serve sc.exe.