Sdílet prostřednictvím


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.

Viz také