Správa služeb
Tato ukázka platí jenom pro Windows PowerShell 5.1.
K dispozici je osm základních rutin služby , které jsou navržené pro širokou škálu úloh služby . Tento článek se zabývá pouze výpisem a změnou stavu spuštění služeb. Seznam rutin služby můžete získat pomocí Get-Command *-Service
. Informace o jednotlivých rutinách najdete pomocí , Get-Help <Cmdlet-Name>
například Get-Help New-Service
.
Získání služeb
Služby můžete získat na místním nebo vzdáleném počítači pomocí rutiny Get-Service
. Stejně jako v případě Get-Process
, použití Get-Service
příkazu bez parametrů vrátí všechny služby. Můžete filtrovat podle názvu, i když jako zástupný znak použijete hvězdičku:
PS> Get-Service -Name se*
Status Name DisplayName
------ ---- -----------
Running seclogon Secondary Logon
Running SENS System Event Notification
Stopped ServiceLayer ServiceLayer
Vzhledem k tomu, že není vždy zřejmé, jaký je skutečný název služby, možná budete muset najít služby podle zobrazovaného názvu. Můžete hledat podle konkrétního názvu, použít zástupné kóty nebo zadat seznam zobrazovaných názvů:
PS> Get-Service -DisplayName se*
Status Name DisplayName
------ ---- -----------
Running lanmanserver Server
Running SamSs Security Accounts Manager
Running seclogon Secondary Logon
Stopped ServiceLayer ServiceLayer
Running wscsvc Security Center
PS> Get-Service -DisplayName ServiceLayer, Server
Status Name DisplayName
------ ---- -----------
Running lanmanserver Server
Stopped ServiceLayer ServiceLayer
Získání vzdálených služeb
Pomocí Windows PowerShellu můžete pomocí parametru Get-Service
ComputerName rutiny získat služby na vzdálených počítačích. Parametr ComputerName přijímá více hodnot a zástupných znaků, takže služby můžete získat na více počítačích jediným příkazem. Například následující příkaz získá služby na vzdáleném počítači Server01.
Get-Service -ComputerName Server01
Počínaje PowerShellem 6.0 *-Service
nemají rutiny parametr ComputerName . Služby můžete dál získat na vzdálených počítačích pomocí vzdálené komunikace PowerShellu. Například následující příkaz získá služby na vzdáleném počítači Server02.
Invoke-Command -ComputerName Server02 -ScriptBlock { Get-Service }
Služby můžete spravovat také pomocí dalších *-Service
rutin. Další informace o vzdálené komunikace PowerShellu najdete v tématu about_Remote.
Získání požadovaných a závislých služeb
Rutina Get-Service má dva parametry, které jsou velmi užitečné při správě služeb. Parametr DependentServices získá služby, které závisí na službě.
Parametr RequiredServices získá služby, na kterých závisí služba LanmanWorkstation.
PS> Get-Service -Name LanmanWorkstation -RequiredServices
Status Name DisplayName
------ ---- -----------
Running MRxSmb20 SMB 2.0 MiniRedirector
Running bowser Bowser
Running MRxSmb10 SMB 1.x MiniRedirector
Running NSI Network Store Interface Service
Parametr DependentServices získá, který vyžaduje službu LanmanWorkstation.
PS> Get-Service -Name LanmanWorkstation -DependentServices
Status Name DisplayName
------ ---- -----------
Running SessionEnv Terminal Services Configuration
Running Netlogon Netlogon
Stopped Browser Computer Browser
Running BITS Background Intelligent Transfer Ser...
Následující příkaz získá všechny služby, které mají závislosti. Rutina Format-Table
pro zobrazení vlastností Status, Name, RequiredServices a DependentServices služeb.
Get-Service -Name * | Where-Object {$_.RequiredServices -or $_.DependentServices} |
Format-Table -Property Status, Name, RequiredServices, DependentServices -auto
Zastavení, spuštění, pozastavení a restartování služeb
Všechny rutiny služby mají stejný obecný formulář. Služby je možné zadat běžným názvem nebo zobrazovanými názvy a jako hodnoty přebírat seznamy a zástupné cardy. Pokud chcete službu zařazování tisku zastavit, použijte:
Stop-Service -Name spooler
Pokud chcete po zastavení zařazování tisku spustit, použijte:
Start-Service -Name spooler
Chcete-li pozastavit zařazování tisku, použijte:
Suspend-Service -Name spooler
Rutina Restart-Service
funguje stejným způsobem jako ostatní rutiny služby:
PS> Restart-Service -Name spooler
WARNING: Waiting for service 'Print Spooler (Spooler)' to finish starting...
WARNING: Waiting for service 'Print Spooler (Spooler)' to finish starting...
PS>
Všimněte si, že se zobrazí opakovaná zpráva s upozorněním, že se služba zařazování tisku spouští. Když provedete operaci služby, která nějakou dobu trvá, PowerShell vás upozorní, že se stále pokouší provést úlohu.
Pokud chcete restartovat více služeb, můžete získat seznam služeb, filtrovat je a pak provést restartování:
PS> Get-Service | Where-Object -FilterScript {$_.CanStop} | Restart-Service
WARNING: Waiting for service 'Computer Browser (Browser)' to finish stopping...
WARNING: Waiting for service 'Computer Browser (Browser)' to finish stopping...
Restart-Service : can't stop service 'Logical Disk Manager (dmserver)' because
it has dependent services. It can only be stopped if the Force flag is set.
At line:1 char:57
+ Get-Service | Where-Object -FilterScript {$_.CanStop} | Restart-Service <<<<
WARNING: Waiting for service 'Print Spooler (Spooler)' to finish starting...
WARNING: Waiting for service 'Print Spooler (Spooler)' to finish starting...
Tyto rutiny služby nemají parametr ComputerName , ale můžete je spustit na vzdáleném počítači pomocí rutiny Invoke-Command
. Například následující příkaz restartuje službu zařazování na vzdáleném počítači Server01.
Invoke-Command -ComputerName Server01 {Restart-Service Spooler}
Nastavení vlastností služby
Rutina Set-Service
změní vlastnosti služby na místním nebo vzdáleném počítači. Vzhledem k tomu, že stav služby je vlastnost, můžete tuto rutinu použít ke spuštění, zastavení a pozastavení služby.
Rutina Set-Service má také parametr StartupType, který umožňuje změnit typ spuštění služby.
Pokud chcete používat Set-Service
ve Windows Vista a novějších verzích Windows, otevřete PowerShell s možností Spustit jako správce .
Další informace naleznete v tématu Set-Service