Spuštění vzdálených příkazů
Pomocí jednoho příkazu PowerShellu můžete spouštět příkazy na jednom nebo stovkách počítačů. Windows PowerShell podporuje vzdálené výpočty pomocí různých technologií, včetně rozhraní WMI, RPC a WS-Management.
PowerShell podporuje vzdálené komunikace rozhraní WMI, WS-Management a SSH. V PowerShellu 7 a novějším se rpc podporuje jenom ve Windows.
Další informace o vzdálené komunikace v PowerShellu najdete v následujících článcích:
Vzdálené komunikace Windows PowerShellu bez konfigurace
Mnoho rutin Prostředí Windows PowerShell má parametr ComputerName , který umožňuje shromažďovat data a měnit nastavení na jednom nebo více vzdálených počítačích. Tyto rutiny používají různé komunikační protokoly a pracují na všech operačních systémech Windows bez jakékoli zvláštní konfigurace.
Mezi tyto rutiny patří:
- Restartování počítače
- Testovací Připojení
- Clear-EventLog
- Get-EventLog
- Get-HotFix
- Get-Process
- Get-Service
- Set-Service
- Get-WinEvent
- Get-WmiObject
Rutiny, které podporují vzdálené komunikace bez speciální konfigurace, mají obvykle parametr ComputerName a nemají parametr Session . Pokud chcete ve své relaci najít tyto rutiny, zadejte:
Get-Command | Where-Object {
$_.Parameters.Keys -contains "ComputerName" -and
$_.Parameters.Keys -notcontains "Session"
}
Vzdálené komunikace Windows PowerShellu
Pomocí protokolu WS-Management umožňuje vzdálená komunikace prostředí Windows PowerShell spustit jakýkoli příkaz Windows PowerShellu na jednom nebo více vzdálených počítačích. Můžete navázat trvalá připojení, spouštět interaktivní relace a spouštět skripty na vzdálených počítačích.
Pokud chcete používat vzdálenou správu Windows PowerShellu, musí být vzdálený počítač nakonfigurovaný pro vzdálenou správu. Další informace, včetně pokynů, naleznete v tématu O vzdálených požadavcích.
Jakmile nakonfigurujete vzdálené komunikace Prostředí Windows PowerShell, máte k dispozici řadu strategií vzdálené komunikace. Tento článek uvádí jen několik z nich. Další informace naleznete v tématu O vzdáleném přístupu.
Spuštění interaktivní relace
Pokud chcete spustit interaktivní relaci s jedním vzdáleným počítačem, použijte rutinu Enter-PSSession . Pokud chcete například spustit interaktivní relaci se vzdáleným počítačem Server01, zadejte:
Enter-PSSession Server01
Příkazový řádek se změní tak, aby zobrazoval název vzdáleného počítače. Všechny příkazy, které zadáte na příkazovém řádku, se spustí ve vzdáleném počítači a výsledky se zobrazí v místním počítači.
Chcete-li ukončit interaktivní relaci, zadejte:
Exit-PSSession
Další informace o rutinách Enter-PSSession
a Exit-PSSession
rutinách najdete tady:
Spuštění vzdáleného příkazu
Pokud chcete spustit příkaz na jednom nebo více počítačích, použijte rutinu Invoke-Command . Pokud například chcete spustit příkaz Get-UICulture na vzdálených počítačích Server01 a Server02, zadejte:
Invoke-Command -ComputerName Server01, Server02 -ScriptBlock {Get-UICulture}
Výstup se vrátí do počítače.
LCID Name DisplayName PSComputerName
---- ---- ----------- --------------
1033 en-US English (United States) server01.corp.fabrikam.com
1033 en-US English (United States) server02.corp.fabrikam.com
Spuštění skriptu
Pokud chcete spustit skript na jednom nebo mnoha vzdálených počítačích, použijte parametr FilePath rutiny Invoke-Command
. Skript musí být zapnutý nebo přístupný pro místní počítač. Výsledky se vrátí do místního počítače.
Například následující příkaz spustí DiskCollect.ps1
skript na vzdálených počítačích, Server01 a Server02.
Invoke-Command -ComputerName Server01, Server02 -FilePath c:\Scripts\DiskCollect.ps1
Vytvoření trvalého Připojení ionu
Pomocí rutiny New-PSSession
vytvořte trvalou relaci na vzdáleném počítači. Následující příklad vytvoří vzdálené relace na Serveru01 a Server02. Objekty relace jsou uloženy v $s
proměnné.
$s = New-PSSession -ComputerName Server01, Server02
Teď, když jsou relace vytvořené, můžete v nich spustit libovolný příkaz. A protože relace jsou trvalé, můžete shromažďovat data z jednoho příkazu a používat je v jiném příkazu.
Například následující příkaz spustí Get-HotFix
příkaz v relacích v $s
proměnné a uloží výsledky do $h
proměnné. Proměnná $h
se vytvoří v každé relaci, $s
ale v místní relaci neexistuje.
Invoke-Command -Session $s {$h = Get-HotFix}
Teď můžete data v $h
proměnné použít s dalšími příkazy ve stejné relaci. Výsledky se zobrazí v místním počítači. Příklad:
Invoke-Command -Session $s {$h | where {$_.InstalledBy -ne "NT AUTHORITY\SYSTEM"}}
Pokročilá komunikace
PowerShell obsahuje rutiny, které umožňují:
- Konfigurace a vytvoření vzdálených relací z místních i vzdálených konců
- Vytváření přizpůsobených a omezených relací
- Import příkazů ze vzdálené relace, která ve skutečnosti běží implicitně ve vzdálené relaci
- Konfigurace zabezpečení vzdálené relace
PowerShell ve Windows obsahuje zprostředkovatele WSMan. Zprostředkovatel vytvoří jednotku WSMAN:
, která umožňuje procházet hierarchii nastavení konfigurace na místním počítači a vzdálených počítačích.
Další informace o zprostředkovateli WSMan naleznete v tématu WSMan Provider and About WS-Management Rutiny, nebo v konzole Windows PowerShell zadejte Get-Help wsman
.
Další informace naleznete v tématu:
- Nejčastější dotazy ke vzdálené komunikace PowerShellu
- Register-PSSessionConfiguration
- Import-PSSession
Nápovědu k chybám vzdálené komunikace najdete v tématu about_Remote_Troubleshooting.