about_Remote
Krátký popis
Popisuje, jak spustit vzdálené příkazy v PowerShellu.
Dlouhý popis
Vzdálené příkazy můžete spouštět na jednom nebo několika vzdálených počítačích pomocí dočasného nebo trvalého připojení. Můžete také spustit interaktivní relaci s jedním vzdáleným počítačem.
Poznámka:
Pokud chcete používat vzdálenou komunikace PowerShellu, musíte nakonfigurovat místní a vzdálené počítače pro vzdálenou komunikace. Další informace najdete v tématu about_Remote_Requirements.
Jak spustit interaktivní relaci
Nejjednodušší způsob, jak spustit vzdálené příkazy, je spustit interaktivní relaci se vzdáleným počítačem.
Po spuštění relace se příkazy, které zadáte na vzdáleném počítači, spustí, jako kdybyste je zadali přímo na vzdáleném počítači. V každé interaktivní relaci se můžete připojit jenom k jednomu počítači.
Pokud chcete spustit interaktivní relaci, použijte tuto rutinu Enter-PSSession
. Následující příkaz spustí interaktivní relaci s počítačem Server01:
Enter-PSSession Server01
PowerShell změní příkazový řádek tak, aby zahrnoval název vzdáleného počítače.
Server01\PS>
Teď můžete psát příkazy na počítači Server01.
Chcete-li ukončit interaktivní relaci, zadejte:
Exit-PSSession
Další informace naleznete v tématu Enter-PSSession.
Použití rutin s parametrem ComputerName
Několik rutin má parametr ComputerName , který umožňuje získat objekty ze vzdálených počítačů.
Vzhledem k tomu, že tyto rutiny nepoužívají vzdálené komunikace PowerShellu založené na WS-Management, můžete použít parametr ComputerName těchto rutin na jakémkoli počítači, na kterém běží PowerShell. Počítače nemusí být nakonfigurované pro vzdálené komunikace PowerShellu a počítače nemusí splňovat požadavky na systém pro vzdálené komunikace.
Následující rutiny mají parametr ComputerName:
Clear-EventLog Limit-EventLog
Get-Counter New-EventLog
Get-EventLog Remove-EventLog
Get-HotFix Restart-Computer
Get-Process Show-EventLog
Get-Service Stop-Computer
Get-WinEvent Test-Connection
Get-WmiObject Write-EventLog
Například následující příkaz získá služby na vzdáleném počítači Server01:
Get-Service -ComputerName Server01
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'
}
Spuštění vzdáleného příkazu
Pokud chcete na vzdálených počítačích spustit další příkazy, použijte tuto rutinu Invoke-Command
.
Pokud chcete spustit jeden příkaz nebo několik nesouvisejících příkazů, zadejte vzdálené počítače pomocí parametru Invoke-Command
ComputerName. K zadání příkazu použijte parametr ScriptBlock.
Například následující příkaz spustí Get-Culture
příkaz na počítači Server01.
Invoke-Command -ComputerName Server01 -ScriptBlock {Get-Culture}
Jak vytvořit trvalé připojení
Pokud použijete parametr Invoke-Command
ComputerName rutiny, PowerShell vytvoří dočasné připojení ke vzdálenému počítači. Po dokončení příkazu se připojení zavře. Všechny proměnné nebo funkce definované v této dočasné relaci se ztratí.
Pokud chcete vytvořit trvalé připojení ke vzdálenému počítači, použijte rutinu New-PSSession
. Například následující příkaz vytvoří psSessions na počítačích Server01 a Server02 a potom uloží psSessions do $s
proměnné.
$s = New-PSSession -ComputerName Server01, Server02
Spouštění příkazů v psSession
Pomocí psSession můžete spustit řadu vzdálených příkazů, které sdílejí data, jako jsou funkce, aliasy a hodnoty proměnných. Pokud chcete spouštět příkazy v psSession, použijte parametr Session rutiny Invoke-Command
.
Například následující příkaz používá rutinu Invoke-Command
ke spuštění Get-Process
příkazu v psSessions na počítačích Server01 a Server02.
Příkaz uloží procesy do $p
proměnné v každé psSession.
Invoke-Command -Session $s -ScriptBlock {$p = Get-Process}
Vzhledem k tomu, že psSession používá trvalé připojení, můžete spustit jiný příkaz ve stejné PSSession, který používá proměnnou $p
. Následující příkaz spočítá počet procesů uložených v $p
.
Invoke-Command -Session $s -ScriptBlock {$p.count}
Spuštění vzdáleného příkazu na více počítačích
Chcete-li spustit vzdálený příkaz na více počítačích, zadejte všechny názvy počítačů v hodnotě Parametr ComputerName parametru Invoke-Command
. Názvy oddělte čárkami.
Následující příkaz například spustí Get-Culture
příkaz na třech počítačích:
Invoke-Command -ComputerName S1, S2, S3 -ScriptBlock {Get-Culture}
Můžete také spustit příkaz ve více psSessions. Následující příkazy vytvoří psSessions na počítačích Se serverem 01, Server02 a Server03 a potom spustí Get-Culture
příkaz v každé z psSessions.
$s = New-PSSession -ComputerName S1, S2, S3
Invoke-Command -Session $s -ScriptBlock {Get-Culture}
Chcete-li zahrnout seznam počítačů místního počítače, zadejte název místního počítače, zadejte tečku (.
) nebo typ localhost
.
Invoke-Command -ComputerName S1, S2, S3, localhost -ScriptBlock {Get-Culture}
Spuštění skriptu na vzdálených počítačích
Chcete-li spustit místní skript na vzdálených počítačích, použijte parametr FilePath parametru Invoke-Command
. Nemusíte kopírovat žádné soubory. Například následující příkaz spustí Sample.ps1
skript na počítačích S1 a S2:
Invoke-Command -ComputerName S1, S2 -FilePath C:\Test\Sample.ps1
PowerShell vrátí výsledky skriptu do místního počítače.
Zastavení vzdáleného příkazu
Pokud chcete příkaz přerušit, stiskněte ctrl +c. PowerShell předá žádost o přerušení vzdálenému počítači, kde ukončí vzdálený příkaz.
Další informace
Informace o požadavcích na systém pro vzdálené komunikace najdete v tématu about_Remote_Requirements.
Nápovědu k formátování vzdáleného výstupu najdete v tématu about_Remote_Output.
Informace o tom, jak vzdálená komunikace funguje, jak spravovat vzdálená data, speciální konfigurace, problémy se zabezpečením a další nejčastější dotazy, najdete v nejčastějších dotazech ke vzdálené komunikaci PowerShellu.
Nápovědu k řešení chyb vzdálené komunikace najdete v tématu about_Remote_Troubleshooting.
Informace o instancích PSSession a trvalých připojeních najdete v tématu about_PSSessions.
Informace o úlohách na pozadí PowerShellu najdete v tématu about_Jobs.