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 zdalnego zarządzania w programie PowerShell, zobacz następujące artykuły:

Zdalne zarządzanie 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, które obsługują zdalne wykonywanie bez specjalnej konfiguracji, mają parametr ComputerName i nie mają parametru Sesja. Aby znaleźć te polecenia cmdlet w swojej sesji, wpisz je:

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

Zdalne zarządzanie Windows PowerShell

Za pomocą protokołu WS-Management, zdalne działanie w Windows PowerShell umożliwia uruchamianie dowolnego polecenia programu Windows PowerShell na jednym lub więcej komputerach zdalnych. 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 Informacje o wymaganiach zdalnych.

Po skonfigurowaniu zdalnej komunikacji programu Windows PowerShell, dostępnych jest wiele strategii zdalnej komunikacji. 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 poleceń cmdlet Enter-PSSession i Exit-PSSession, zobacz:

Uruchamianie zdalnego polecenia

Aby uruchomić polecenie na jednym lub kilku komputerach, użyj cmdletu 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 FilePath polecenia cmdlet Invoke-Command. 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 skrypt DiskCollect.ps1 na komputerach zdalnych, Server01 i Server02.

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

Ustanawianie trwałego połączenia

Użyj polecenia cmdlet New-PSSession, aby utworzyć sesję trwałą 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

Gdy sesje zostaną ustanowione, możesz uruchomić dowolne polecenie w sesjach. 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 polecenie Get-HotFix w sesjach w zmiennej $s i zapisuje wyniki w zmiennej $h. Zmienna $h jest tworzona w każdej sesji w $s, 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"}}

Zaawansowana komunikacja zdalna

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

  • Konfiguruj i twórz sesje zdalne zarówno z lokalnych, jak i zdalnych stron.
  • 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 dysk WSMan:, 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 dostawcy programu WSMan i About WS-Management Cmdletslub w konsoli programu Windows PowerShell wpisz Get-Help WSMan.

Aby uzyskać więcej informacji, zobacz:

Aby uzyskać pomoc dotyczącą błędów zdalnego komunikowania się, zobacz about_Remote_Troubleshooting.

Zobacz też