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ří:

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, $sale 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:

Nápovědu k chybám vzdálené komunikace najdete v tématu about_Remote_Troubleshooting.

Viz také