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 SSH w programie PowerShell
- Komunikacja zdalna programu WSMan w programie PowerShell
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ą:
- Restart-Computer
- Test-Connection
- Clear-EventLog
- Get-EventLog
- Get-HotFix
- Get-Process
- Get-Service
- Set-Service
- Get-WinEvent
- Get-WmiObject
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 $s
programie , 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:
- Często zadawane pytania dotyczące komunikacji zdalnej programu PowerShell
- Register-PSSessionConfiguration
- Import-PSSession
Aby uzyskać pomoc dotyczącą błędów komunikacji zdalnie, zobacz about_Remote_Troubleshooting.