Uruchamianie poleceń zdalnychRunning Remote Commands

Polecenia można uruchamiać na jednym lub na setkach komputerach za pomocą jednego polecenia programu PowerShell.You can run commands on one or hundreds of computers with a single PowerShell command. Program Windows PowerShell obsługuje zdalne przetwarzanie za pomocą różnych technologii, w tym usługi WMI, RPC i WS-Management.Windows PowerShell supports remote computing by using various technologies, including WMI, RPC, and WS-Management.

Program PowerShell Core obsługuje usługi WMI, WS-Management i SSH.PowerShell Core supports WMI, WS-Management, and SSH remoting. W programie PowerShell 6 usługa RPC nie jest już obsługiwana.In PowerShell 6, RPC is no longer supported. W programie PowerShell 7 lub nowszym usługa RPC jest obsługiwana tylko w systemie Windows.In PowerShell 7 and above, RPC is supported only in Windows.

Aby uzyskać więcej informacji na temat komunikacji zdalnej w programie PowerShell Core, zobacz następujące artykuły:For more information about remoting in PowerShell Core, see the following articles:

Komunikacja zdalna programu Windows PowerShell bez konfiguracjiWindows PowerShell Remoting Without Configuration

Wiele poleceń cmdlet programu Windows PowerShell ma parametr ComputerName, który umożliwia zbieranie danych i zmienianie ustawień na co najmniej jednym komputerze zdalnym.Many Windows PowerShell cmdlets have the ComputerName parameter that enables you to collect data and change settings on one or more remote computers. Te polecenia cmdlet wykorzystują różne protokoły komunikacyjne i pracują we wszystkich systemach operacyjnych Windows bez żadnej specjalnej konfiguracji.These cmdlets use varying communication protocols and work on all Windows operating systems without any special configuration.

Te polecenia cmdlet obejmują:These cmdlets include:

Zazwyczaj polecenia cmdlet obsługujące komunikację zdalną bez specjalnej konfiguracji mają parametr ComputerName i nie mają parametru sesji.Typically, cmdlets that support remoting without special configuration have the ComputerName parameter and don't have the Session parameter. Aby znaleźć te polecenia cmdlet w sesji, wpisz:To find these cmdlets in your session, type:

Get-Command | where { $_.parameters.keys -contains "ComputerName" -and $_.parameters.keys -notcontains "Session"}

Komunikacja zdalna programu Windows PowerShellWindows PowerShell Remoting

Korzystając z protokołu WS-Management, komunikacja zdalna programu Windows PowerShell umożliwia uruchomienie dowolnego polecenia programu Windows PowerShell na co najmniej jednym komputerze zdalnym.Using the WS-Management protocol, Windows PowerShell remoting lets you run any Windows PowerShell command on one or more remote computers. Można nawiązywać połączenia trwałe, uruchamiać interaktywne sesje i uruchamiać skrypty na komputerach zdalnych.You can establish persistent connections, start interactive sessions, and run scripts on remote computers.

Aby można było korzystać z komunikacji zdalnej programu Windows PowerShell, komputer zdalny musi być skonfigurowany do zdalnego zarządzania.To use Windows PowerShell remoting, the remote computer must be configured for remote management. Aby uzyskać więcej informacji, w tym instrukcje, zobacz Informacje o wymaganiach zdalnych.For more information, including instructions, see About Remote Requirements.

Po skonfigurowaniu komunikacji zdalnej programu Windows PowerShell dostępne są różne strategie komunikacji zdalnej.Once you have configured Windows PowerShell remoting, many remoting strategies are available to you. W tym artykule wymieniono tylko niektóre z nich.This article lists just a few of them. Aby uzyskać więcej informacji, zobacz Informacje o zdalnym.For more information, see About Remote.

Rozpocznij sesję interaktywnąStart an Interactive Session

Aby rozpocząć sesję interaktywną z pojedynczym komputerem zdalnym, należy użyć polecenia cmdlet Enter-PSSession .To start an interactive session with a single remote computer, use the Enter-PSSession cmdlet. Na przykład aby uruchomić sesję interaktywną z Serwer01 komputerem zdalnym, wpisz:For example, to start an interactive session with the Server01 remote computer, type:

Enter-PSSession Server01

Wiersz polecenia zmieni się, aby wyświetlić nazwę komputera zdalnego.The command prompt changes to display the name of the remote computer. Wszystkie polecenia, które można wpisać w wierszu polecenia na komputerze zdalnym, a wyniki są wyświetlane na komputerze lokalnym.Any commands that you type at the prompt run on the remote computer and the results are displayed on the local computer.

Aby zakończyć sesję interaktywną, wpisz:To end the interactive session, type:

Exit-PSSession

Aby uzyskać więcej informacji na temat poleceń cmdlet Enter-PSSession i Exit-PSSession, zobacz:For more information about the Enter-PSSession and Exit-PSSession cmdlets, see:

Uruchom polecenie zdalneRun a Remote Command

Aby uruchomić polecenie na co najmniej jednym komputerze, użyj polecenia cmdlet Invoke-Command .To run a command on one or more computers, use the Invoke-Command cmdlet. Na przykład aby uruchomić polecenie Get-UICulture na komputerach zdalnych Serwer01 i Server02, wpisz:For example, to run a Get-UICulture command on the Server01 and Server02 remote computers, type:

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

Dane wyjściowe są zwracane do komputera.The output is returned to your computer.

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 skryptuRun a Script

Aby uruchomić skrypt na jednym lub wielu komputerach zdalnych, użyj parametru FilePath Invoke-Command polecenia cmdlet.To run a script on one or many remote computers, use the FilePath parameter of the Invoke-Command cmdlet. Skrypt musi być włączony lub dostępny dla komputera lokalnego.The script must be on or accessible to your local computer. Wyniki są zwracane do komputera lokalnego.The results are returned to your local computer.

Na przykład następujące polecenie uruchamia skrypt DiskCollect.ps1 na komputerach zdalnych, Serwer01 i Server02.For example, the following command runs the DiskCollect.ps1 script on the remote computers, Server01 and Server02.

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

Ustanów trwałe połączenieEstablish a Persistent Connection

Użyj New-PSSession polecenia cmdlet, aby utworzyć trwałą sesję na komputerze zdalnym.Use the New-PSSession cmdlet to create a persistent session on a remote computer. Poniższy przykład tworzy sesje zdalne w Serwer01 i Server02.The following example creates remote sessions on Server01 and Server02. Obiekty sesji są przechowywane w $s zmiennej.The session objects are stored in the $s variable.

$s = New-PSSession -ComputerName Server01, Server02

Po ustanowieniu sesji można uruchomić dowolne polecenie.Now that the sessions are established, you can run any command in them. Ponieważ sesje są trwałe, można zbierać dane z jednego polecenia i używać ich w innym poleceniu.And because the sessions are persistent, you can collect data from one command and use it in another command.

Na przykład następujące polecenie uruchamia polecenie Get-HotFix w sesjach w zmiennej $s i zapisuje wyniki w zmiennej $h.For example, the following command runs a Get-HotFix command in the sessions in the $s variable and it saves the results in the $h variable. Zmienna $h jest tworzona w każdej sesji w $s, ale nie istnieje w sesji lokalnej.The $h variable is created in each of the sessions in $s, but it doesn't exist in the local session.

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

Teraz można używać danych w $h zmiennej z innymi poleceniami w tej samej sesji.Now you can use the data in the $h variable with other commands in the same session. Wyniki są wyświetlane na komputerze lokalnym.The results are displayed on the local computer. Na przykład:For example:

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

Zaawansowana komunikacja zdalnaAdvanced Remoting

Zdalne zarządzanie programu Windows PowerShell właśnie rozpoczyna się tutaj.Windows PowerShell remote management just begins here. Korzystając z poleceń cmdlet zainstalowanych z programem Windows PowerShell, można ustanawiać i konfigurować sesje zdalne zarówno z lokalnego, jak i zdalnego zakończenia, tworzyć dostosowane i ograniczone sesje, zezwalać użytkownikom na importowanie poleceń z sesji zdalnej, która rzeczywiście działa niejawnie w sesji zdalnej, Konfigurowanie zabezpieczeń sesji zdalnej i wiele innych.By using the cmdlets installed with Windows PowerShell, you can establish and configure remote sessions both from the local and remote ends, create customized and restricted sessions, allow users to import commands from a remote session that actually run implicitly on the remote session, configure the security of a remote session, and much more.

Program Windows PowerShell zawiera dostawcę usługi WSMan.Windows PowerShell includes a WSMan provider. Dostawca tworzy WSMAN: dysk, który umożliwia nawigowanie w hierarchii ustawień konfiguracji na komputerze lokalnym i komputerach zdalnych.The provider creates a WSMAN: drive that lets you navigate through a hierarchy of configuration settings on the local computer and remote computers.

Aby uzyskać więcej informacji na temat dostawcy usługi WSMan, zobacz Dostawca usługi WSMAN i Informacje o POLECENIACH cmdlet usługi WS-Managementlub w konsoli programu Windows PowerShell wpisz polecenie Get-Help wsman .For more information about the WSMan provider, see WSMan Provider and About WS-Management Cmdlets, or in the Windows PowerShell console, type Get-Help wsman.

Aby uzyskać więcej informacji, zobacz:For more information, see:

Aby uzyskać pomoc dotyczącą błędów zdalnych, zobacz about_Remote_Troubleshooting.For help with remoting errors, see about_Remote_Troubleshooting.

Zobacz teżSee Also