Udostępnij za pośrednictwem


Uruchamianie poleceń zdalnych

Polecenia można uruchamiać na jednym lub setkach komputerów za pomocą jednego polecenia programu PowerShell. Program Windows PowerShell obsługuje zdalne przetwarzanie przy użyciu różnych technologii, w tym WMI, RPC i WS-Management.

Program PowerShell obsługuje komunikacji zdalnej WMI, WS-Management i SSH. W programie PowerShell 7 lub nowszym RPC jest obsługiwana tylko w systemie Windows.

Aby uzyskać więcej informacji na temat komunikacji zdalnej w programie PowerShell, zobacz następujące artykuły:

Komunikacja zdalna programu Windows PowerShell bez konfiguracji

Wiele poleceń cmdlet programu Windows PowerShell ma parametr ComputerName , który umożliwia zbieranie danych i zmienianie ustawień na co najmniej jednym komputerze zdalnym. Te polecenia cmdlet używają różnych protokołów komunikacyjnych i działają we wszystkich systemach operacyjnych Windows bez żadnej specjalnej konfiguracji.

Te polecenia cmdlet obejmują:

Zazwyczaj polecenia cmdlet obsługujące komunikacja zdalną bez specjalnej konfiguracji mają parametr ComputerName i nie mają parametru Sesja . Aby znaleźć te polecenia cmdlet w sesji, wpisz:

Get-Command | Where-Object {
    $_.Parameters.Keys -contains "ComputerName" -and
    $_.Parameters.Keys -notcontains "Session"
}

Komunikacja zdalna programu Windows PowerShell

Za pomocą protokołu WS-Management komunikacja zdalna programu Windows PowerShell umożliwia uruchamianie dowolnego polecenia programu Windows PowerShell na co najmniej jednym komputerze zdalnym. Możesz ustanowić trwałe połączenia, uruchomić sesje interaktywne i uruchamiać skrypty na komputerach zdalnych.

Aby można było używać komunikacji zdalnej programu Windows PowerShell, należy skonfigurować komputer zdalny do zdalnego zarządzania. Aby uzyskać więcej informacji, w tym instrukcje, zobacz About Remote Requirements (Informacje o wymaganiach zdalnych).

Po skonfigurowaniu komunikacji zdalnej programu Windows PowerShell dostępnych jest wiele strategii komunikacji zdalnej. W tym artykule wymieniono tylko kilka z nich. Aby uzyskać więcej informacji, zobacz Informacje o zdalnym.

Rozpoczynanie sesji interakcyjnej

Aby rozpocząć sesję interaktywną z jednym komputerem zdalnym, użyj polecenia cmdlet Enter-PSSession . Na przykład aby rozpocząć sesję interaktywną z komputerem zdalnym Server01, wpisz:

Enter-PSSession Server01

Wiersz polecenia zmieni się, aby wyświetlić nazwę komputera zdalnego. Wszystkie polecenia wpisywane w wierszu polecenia są uruchamiane na komputerze zdalnym, a wyniki są wyświetlane na komputerze lokalnym.

Aby zakończyć sesję interaktywną, wpisz:

Exit-PSSession

Aby uzyskać więcej informacji na temat Enter-PSSession poleceń cmdlet i Exit-PSSession , zobacz:

Uruchamianie zdalnego polecenia

Aby uruchomić polecenie na co najmniej jednym komputerze, użyj polecenia cmdlet Invoke-Command . Aby na przykład uruchomić polecenie Get-UICulture na komputerach zdalnych Server01 i Server02, wpisz:

Invoke-Command -ComputerName Server01, Server02 -ScriptBlock {Get-UICulture}

Dane wyjściowe są zwracane do komputera.

LCID    Name     DisplayName               PSComputerName
----    ----     -----------               --------------
1033    en-US    English (United States)   server01.corp.fabrikam.com
1033    en-US    English (United States)   server02.corp.fabrikam.com

Uruchamianie skryptu

Aby uruchomić skrypt na jednym lub wielu komputerach zdalnych, użyj parametru Invoke-Command FilePath polecenia cmdlet. Skrypt musi być włączony lub dostępny dla komputera lokalnego. Wyniki są zwracane na komputer lokalny.

Na przykład następujące polecenie uruchamia DiskCollect.ps1 skrypt na komputerach zdalnych, Server01 i Server02.

Invoke-Command -ComputerName Server01, Server02 -FilePath c:\Scripts\DiskCollect.ps1

Ustanawianie trwałego Połączenie ionu

New-PSSession Użyj polecenia cmdlet , aby utworzyć trwałą sesję na komputerze zdalnym. Poniższy przykład tworzy sesje zdalne na serwerach Server01 i Server02. Obiekty sesji są przechowywane w zmiennej $s .

$s = New-PSSession -ComputerName Server01, Server02

Po ustanowieniu sesji możesz uruchomić dowolne polecenie w nich. Ponieważ sesje są trwałe, można zbierać dane z jednego polecenia i używać ich w innym poleceniu.

Na przykład następujące polecenie uruchamia Get-HotFix polecenie w sesjach w zmiennej $s i zapisuje wyniki w zmiennej $h . Zmienna jest tworzona $h w każdej sesji w $sprogramie , ale nie istnieje w sesji lokalnej.

Invoke-Command -Session $s {$h = Get-HotFix}

Teraz możesz użyć danych w zmiennej $h z innymi poleceniami w tej samej sesji. Wyniki są wyświetlane na komputerze lokalnym. Na przykład:

Invoke-Command -Session $s {$h | where {$_.InstalledBy -ne "NT AUTHORITY\SYSTEM"}}

Zaawansowane komunikacja zdalna

Program PowerShell zawiera polecenia cmdlet, które umożliwiają:

  • Konfigurowanie i tworzenie sesji zdalnych zarówno z końców lokalnych, jak i zdalnych
  • Tworzenie niestandardowych i ograniczonych sesji
  • Importowanie poleceń z sesji zdalnej, które są uruchamiane niejawnie w sesji zdalnej
  • Konfigurowanie zabezpieczeń sesji zdalnej

Program PowerShell w systemie Windows zawiera dostawcę programu WSMan. Dostawca tworzy WSMAN: dysk, który umożliwia przechodzenie przez hierarchię ustawień konfiguracji na komputerze lokalnym i komputerach zdalnych.

Aby uzyskać więcej informacji na temat dostawcy WSMan, zobacz WSMan Provider and About WS-Management Cmdlets (Dostawcy programu WSMan i About WS-Management Cmdlets) lub w konsoli programu Windows PowerShell wpisz Get-Help wsman.

Aby uzyskać więcej informacji, zobacz:

Aby uzyskać pomoc dotyczącą błędów komunikacji zdalnie, zobacz about_Remote_Troubleshooting.

Zobacz też