Informacje o zdalnych często zadawane pytaniaAbout Remote FAQ

Krótki opisShort description

Zawiera pytania i odpowiedzi dotyczące uruchamiania poleceń zdalnych w programie PowerShell.Contains questions and answers about running remote commands in PowerShell.

Długi opisLong description

Podczas pracy zdalnej można wpisywać polecenia w programie PowerShell na jednym komputerze (znanym jako "komputer lokalny"), ale polecenia są uruchamiane na innym komputerze (znanym jako "komputer zdalny").When you work remotely, you type commands in PowerShell on one computer (known as the "local computer"), but the commands run on another computer (known as the "remote computer"). Środowisko pracy zdalnej powinna być tak samo, jak to możliwe, bezpośrednio na komputerze zdalnym.The experience of working remotely should be as much like working directly at the remote computer as possible.

Uwaga: Aby korzystać z komunikacji zdalnej programu PowerShell, komputer zdalny musi być skonfigurowany do obsługi komunikacji zdalnej.Note: To use PowerShell remoting, the remote computer must be configured for remoting. Aby uzyskać więcej informacji, zobacz about_Remote_Requirements.For more information, see about_Remote_Requirements.

Czy na obu komputerach jest zainstalowany program PowerShell?Must both computers have PowerShell installed?

Tak.Yes. Aby można było zdalnie korzystać z komputera lokalnego i zdalnego, musi on mieć program PowerShell, strukturę Microsoft .NET i protokół usługi sieci Web do zarządzania (WS-Management).To work remotely, the local and remote computers must have PowerShell, the Microsoft .NET Framework, and the Web Services for Management (WS-Management) protocol. Wszystkie pliki i inne zasoby, które są potrzebne do wykonania określonego polecenia, muszą znajdować się na komputerze zdalnym.Any files and other resources that are needed to execute a particular command must be on the remote computer.

Komputery z uruchomionym programem Windows PowerShell 3,0 i komputery z uruchomionym programem Windows PowerShell 2,0 mogą łączyć się ze sobą zdalnie i uruchamiać polecenia zdalne.Computers running Windows PowerShell 3.0 and computers running Windows PowerShell 2.0 can connect to each other remotely and run remote commands. Jednak niektóre funkcje, takie jak możliwość rozłączenia z sesją i ponownego połączenia z nią, działają tylko wtedy, gdy na obu komputerach jest uruchomiony program Windows PowerShell 3,0.However, some features, such as the ability to disconnect from a session and reconnect to it, work only when both computers are running Windows PowerShell 3.0.

Użytkownik musi mieć uprawnienia do nawiązywania połączenia z komputerem zdalnym, uprawnienia do uruchamiania programu PowerShell i uprawnienia dostępu do magazynów danych (takich jak pliki i foldery) oraz rejestr na komputerze zdalnym.You must have permission to connect to the remote computer, permission to run PowerShell, and permission to access data stores (such as files and folders), and the registry on the remote computer.

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

Jak działa usługa komunikacja zdalna?How does remoting work?

Po przesłaniu polecenia zdalnego polecenie jest przesyłane przez sieć do aparatu programu PowerShell na komputerze zdalnym i uruchamiane w kliencie programu PowerShell na komputerze zdalnym.When you submit a remote command, the command is transmitted across the network to the PowerShell engine on the remote computer, and it runs in the PowerShell client on the remote computer. Wyniki poleceń są wysyłane z powrotem do komputera lokalnego i pojawiają się w sesji programu PowerShell na komputerze lokalnym.The command results are sent back to the local computer and appear in the PowerShell session on the local computer.

Aby przesłać polecenia i odebrać dane wyjściowe, program PowerShell używa protokołu WS-Management.To transmit the commands and receive the output, PowerShell uses the WS-Management protocol. Informacje o protokole WS-Management można znaleźć w sekcji protokół usługi WS-Management w dokumentacji systemu Windows.For information about the WS-Management protocol, see WS-Management Protocol in the Windows documentation.

Począwszy od programu Windows PowerShell 3,0, sesje zdalne są przechowywane na komputerze zdalnym.Beginning in Windows PowerShell 3.0, remote sessions are stored on the remote computer. Dzięki temu można rozłączyć się z sesją i ponownie nawiązać połączenie z innej sesji lub innego komputera bez przerywania poleceń lub utraty stanu.This enables you to disconnect from the session and reconnect from a different session or a different computer without interrupting the commands or losing state.

Czy komunikacja zdalna programu PowerShell jest zabezpieczona?Is PowerShell remoting secure?

Po nawiązaniu połączenia z komputerem zdalnym system używa poświadczeń nazwy użytkownika i hasła na komputerze lokalnym lub poświadczeń dostarczonych w poleceniu w celu zalogowania się do komputera zdalnego.When you connect to a remote computer, the system uses the username and password credentials on the local computer or the credentials that you supply in the command to log you in to the remote computer. Poświadczenia i pozostała część transmisji są szyfrowane.The credentials and the rest of the transmission are encrypted.

Aby dodać dodatkową ochronę, można skonfigurować komputer zdalny tak, aby używał SSL (SSL) zamiast protokołu HTTP do nasłuchiwania żądań Windows Remote Management (WinRM).To add additional protection, you can configure the remote computer to use Secure Sockets Layer (SSL) instead of HTTP to listen for Windows Remote Management (WinRM) requests. Następnie użytkownicy mogą użyć parametru UseSSL Invoke-Command New-PSSession poleceń cmdlet,, i Enter-PSSession podczas ustanawiania połączenia.Then, users can use the UseSSL parameter of the Invoke-Command, New-PSSession, and Enter-PSSession cmdlets when establishing a connection. Ta opcja używa bezpieczniejszego kanału HTTPS zamiast protokołu HTTP.This option uses the more secure HTTPS channel instead of HTTP.

Czy wszystkie polecenia zdalne wymagają komunikacji zdalnej programu PowerShell?Do all remote commands require PowerShell remoting?

Nie.No. Kilka poleceń cmdlet ma parametr ComputerName , który umożliwia uzyskiwanie obiektów z komputera zdalnego.Several cmdlets have a ComputerName parameter that lets you get objects from the remote computer.

Te polecenia cmdlet nie używają komunikacji zdalnej programu PowerShell.These cmdlets do not use PowerShell remoting. Można z nich korzystać na dowolnym komputerze, na którym działa program PowerShell, nawet jeśli komputer nie jest skonfigurowany do komunikacji zdalnej programu PowerShell lub komputer nie spełnia wymagań komunikacji zdalnej programu PowerShell.So, you can use them on any computer that is running PowerShell, even if the computer is not configured for PowerShell remoting or if the computer does not meet the requirements for PowerShell remoting.

Te polecenia cmdlet obejmują następujące elementy:These cmdlets include the following:

  • Get-Process
  • Get-Service
  • Get-WinEvent
  • Get-EventLog
  • Test-Connection

Aby znaleźć wszystkie polecenia cmdlet z parametrem ComputerName , wpisz:To find all the cmdlets with a ComputerName parameter, type:

Get-Help * -Parameter ComputerName
# or
Get-Command -ParameterName ComputerName

Aby określić, czy parametr ComputerName określonego polecenia cmdlet wymaga komunikacji zdalnej programu PowerShell, zobacz opis parametru.To determine whether the ComputerName parameter of a particular cmdlet requires PowerShell remoting, see the parameter description. Aby wyświetlić opis parametru, wpisz:To display the parameter description, type:

Get-Help <cmdlet-name> -Parameter ComputerName

Przykład:For example:

Get-Help Get-Process -Parameter ComputerName

Dla wszystkich innych poleceń Użyj Invoke-Command polecenia cmdlet.For all other commands, use the Invoke-Command cmdlet.

Jak mogę uruchomić polecenie na komputerze zdalnym?How do I run a command on a remote computer?

Aby uruchomić polecenie na komputerze zdalnym, użyj Invoke-Command polecenia cmdlet.To run a command on a remote computer, use the Invoke-Command cmdlet.

Umieść swoje polecenie w nawiasach klamrowych ( {} ), aby umieścić je w bloku skryptu.Enclose your command in braces ({}) to make it a script block. Użyj parametru ScriptBlock , Invoke-Command Aby określić polecenie.Use the ScriptBlock parameter of Invoke-Command to specify the command.

Aby określić komputer zdalny, można użyć parametru ComputerName Invoke-Command .You can use the ComputerName parameter of Invoke-Command to specify a remote computer. Można też utworzyć trwałe połączenie z komputerem zdalnym (sesją), a następnie użyć parametru sesji programu, Invoke-Command Aby uruchomić polecenie w sesji programu.Or, you can create a persistent connection to a remote computer (a session) and then use the Session parameter of Invoke-Command to run the command in the session.

Na przykład poniższe polecenia uruchamiają Get-Process polecenie zdalnie.For example, the following commands run a Get-Process command remotely.

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

#  - OR -

Invoke-Command -Session $s -ScriptBlock {Get-Process}

Aby przerwać zdalne polecenie, wpisz Ctrl + C.To interrupt a remote command, type CTRL+C. Żądanie przerwania jest przesyłane do komputera zdalnego, na którym kończy polecenie zdalnego.The interruption request is passed to the remote computer, where it terminates the remote command.

Aby uzyskać więcej informacji o poleceniach zdalnych, zobacz about_Remote i tematy pomocy dla poleceń cmdlet, które obsługują komunikację zdalną.For more information about remote commands, see about_Remote and the Help topics for the cmdlets that support remoting.

Czy mogę po prostu Telnet z komputerem zdalnym?Can I just telnet into a remote computer?

Za pomocą Enter-PSSession polecenia cmdlet można uruchomić sesję interaktywną z komputerem zdalnym.You can use the Enter-PSSession cmdlet to start an interactive session with a remote computer.

W wierszu polecenia programu PowerShell wpisz:At the PowerShell prompt, type:

Enter-PSSession <ComputerName>

Wiersz polecenia zmieni się, aby pokazać, że nawiązano połączenie z komputerem zdalnym.The command prompt changes to show that you are connected to the remote computer.

<ComputerName>\C:>

Teraz polecenia, które można wpisać, są uruchamiane na komputerze zdalnym tak samo, jakby zostały wpisane bezpośrednio na komputerze zdalnym.Now, the commands that you type run on the remote computer just as though you typed them directly on the remote computer.

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

Exit-PSSession

Sesja interaktywna to trwała sesja, która używa protokołu WS-Management.An interactive session is a persistent session that uses the WS-Management protocol. Nie jest taka sama jak w przypadku korzystania z programu Telnet, ale zapewnia podobne środowisko.It is not the same as using Telnet, but it provides a similar experience.

Aby uzyskać więcej informacji, zobacz Enter-PSSession.For more information, see Enter-PSSession.

Czy można utworzyć połączenie trwałe?Can I create a persistent connection?

Tak.Yes. Polecenia zdalne można uruchomić, określając nazwę komputera zdalnego, jego nazwę NetBIOS lub adres IP.You can run remote commands by specifying the name of the remote computer, its NetBIOS name, or its IP address. Lub można uruchomić polecenia zdalne, określając sesję programu PowerShell (PSSession), która jest połączona z komputerem zdalnym.Or, you can run remote commands by specifying a PowerShell session (PSSession) that is connected to the remote computer.

W przypadku użycia parametru ComputerName Invoke-Command lub Enter-PSSession program PowerShell ustanawia tymczasowe połączenie.When you use the ComputerName parameter of Invoke-Command or Enter-PSSession, PowerShell establishes a temporary connection. Program PowerShell używa tego połączenia, aby uruchomić tylko bieżące polecenie, a następnie zamknie połączenie.PowerShell uses the connection to run only the current command, and then it closes the connection. Jest to bardzo wydajna metoda uruchamiania pojedynczego polecenia lub kilku niepowiązanych poleceń nawet na wielu komputerach zdalnych.This is a very efficient method for running a single command or several unrelated commands, even on many remote computers.

W przypadku New-PSSession tworzenia PSSession za pomocą polecenia cmdlet program PowerShell tworzy trwałe połączenie z PSSession.When you use the New-PSSession cmdlet to create a PSSession, PowerShell establishes a persistent connection for the PSSession. Następnie można uruchomić wiele poleceń w PSSession, w tym polecenia, które udostępniają dane.Then, you can run multiple commands in the PSSession, including commands that share data.

Zazwyczaj tworzysz PSSession do uruchamiania szeregu powiązanych poleceń, które współdzielą dane.Typically, you create a PSSession to run a series of related commands that share data. W przeciwnym razie połączenie tymczasowe utworzone przez parametr ComputerName jest wystarczające dla większości poleceń.Otherwise, the temporary connection created by the ComputerName parameter is sufficient for most commands.

Aby uzyskać więcej informacji na temat sesji, zobacz about_PSSessions.For more information about sessions, see about_PSSessions.

Czy można uruchamiać polecenia na więcej niż jednym komputerze w danym momencie?Can I run commands on more than one computer at a time?

Tak.Yes. Parametr ComputerName Invoke-Command polecenia cmdlet akceptuje wiele nazw komputerów, a parametr Session akceptuje wiele PSSessions.The ComputerName parameter of the Invoke-Command cmdlet accepts multiple computer names, and the Session parameter accepts multiple PSSessions.

Po uruchomieniu Invoke-Command polecenia program PowerShell uruchamia polecenia na wszystkich określonych komputerach lub we wszystkich określonych PSSessions.When you run an Invoke-Command command, PowerShell runs the commands on all of the specified computers or in all of the specified PSSessions.

Program PowerShell może zarządzać setkami współbieżnych połączeń zdalnych.PowerShell can manage hundreds of concurrent remote connections. Jednak liczba zdalnych poleceń, które można wysłać, może być ograniczona przez zasoby komputera i jego pojemność do ustanowienia i utrzymania wielu połączeń sieciowych.However, the number of remote commands that you can send might be limited by the resources of your computer and its capacity to establish and maintain multiple network connections.

Aby uzyskać więcej informacji, zobacz przykład w Invoke-Command temacie pomocy.For more information, see the example in the Invoke-Command Help topic.

Gdzie znajdują się moje profile?Where are my profiles?

Profile programu PowerShell nie są uruchamiane automatycznie w sesjach zdalnych, więc polecenia dodawane przez profil nie są obecne w sesji.PowerShell profiles are not run automatically in remote sessions, so the commands that the profile adds are not present in the session. Ponadto $profile zmienna automatyczna nie jest wypełniana w sesjach zdalnych.In addition, the $profile automatic variable is not populated in remote sessions.

Aby uruchomić profil w sesji, należy użyć Invoke-Command polecenia cmdlet.To run a profile in a session, use the Invoke-Command cmdlet.

Na przykład następujące polecenie uruchamia profil CurrentUserCurrentHost z komputera lokalnego w sesji w programie $s .For example, the following command runs the CurrentUserCurrentHost profile from the local computer in the session in $s.

Invoke-Command -Session $s -FilePath $profile

Następujące polecenie uruchamia profil CurrentUserCurrentHost z komputera zdalnego w sesji programu $s .The following command runs the CurrentUserCurrentHost profile from the remote computer in the session in $s. Ponieważ $profile zmienna nie jest wypełniona, polecenie używa jawnej ścieżki do profilu.Because the $profile variable is not populated, the command uses the explicit path to the profile.

Invoke-Command -Session $s {
  . "$home\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1"
}

Po uruchomieniu tego polecenia polecenia dodawane przez profil do sesji są dostępne w programie $s .After running this command, the commands that the profile adds to the session are available in $s.

Możesz również użyć skryptu uruchamiania w konfiguracji sesji, aby uruchomić profil w każdej sesji zdalnej, która używa konfiguracji sesji.You can also use a startup script in a session configuration to run a profile in every remote session that uses the session configuration.

Aby uzyskać więcej informacji o profilach programu PowerShell, zobacz about_Profiles.For more information about PowerShell profiles, see about_Profiles. Więcej informacji o konfiguracjach sesji znajduje się w temacie Register-PSSessionConfiguration .For more information about session configurations, see Register-PSSessionConfiguration.

Jak ograniczanie pracy nad poleceniami zdalnymi?How does throttling work on remote commands?

Aby ułatwić zarządzanie zasobami na komputerze lokalnym, program PowerShell zawiera funkcję ograniczania do poszczególnych poleceń, która pozwala ograniczyć liczbę współbieżnych połączeń zdalnych ustanowionych dla każdego polecenia.To help you manage the resources on your local computer, PowerShell includes a per-command throttling feature that lets you limit the number of concurrent remote connections that are established for each command.

Wartość domyślna to 32 połączeń współbieżnych, ale można użyć parametru ThrottleLimit poleceń cmdlet, aby ustawić niestandardowy limit ograniczania dla konkretnych poleceń.The default is 32 concurrent connections, but you can use the ThrottleLimit parameter of the cmdlets to set a custom throttle limit for particular commands.

Korzystając z funkcji ograniczania przepustowości, należy pamiętać, że jest ona stosowana do każdego polecenia, a nie do całej sesji lub do komputera.When you use the throttling feature, remember that it is applied to each command, not to the entire session or to the computer. W przypadku uruchamiania poleceń współbieżnie w kilku sesjach lub PSSessions liczba jednoczesnych połączeń jest sumą jednoczesnych połączeń we wszystkich sesjach.If you are running commands concurrently in several sessions or PSSessions, the number of concurrent connections is the sum of the concurrent connections in all the sessions.

Aby znaleźć polecenia cmdlet z parametrem ThrottleLimit , wpisz:To find cmdlets with a ThrottleLimit parameter, type:

Get-Help * -Parameter ThrottleLimit
-or-
Get-Command -ParameterName ThrottleLimit

Czy dane wyjściowe poleceń zdalnych różnią się od lokalnych danych wyjściowych?Is the output of remote commands different from local output?

W przypadku korzystania z programu PowerShell lokalnie należy wysyłać i odbierać "dynamiczne" .NET Framework obiektów; obiekty "Live" to obiekty, które są skojarzone z rzeczywistymi programami lub składnikami systemowymi.When you use PowerShell locally, you send and receive "live" .NET Framework objects; "live" objects are objects that are associated with actual programs or system components. W przypadku wywołania metod lub zmiany właściwości obiektów na żywo zmiany wpływają na rzeczywisty program lub składnik.When you invoke the methods or change the properties of live objects, the changes affect the actual program or component. I, gdy właściwości programu lub składnika zmieniają się, właściwości obiektu, które reprezentują je również zmieniają się.And, when the properties of a program or component change, the properties of the object that represent them also change.

Jednak ze względu na to, że większość obiektów na żywo nie można przesłać za pośrednictwem sieci, program PowerShell "serializować" większość obiektów wysyłanych w poleceniach zdalnych, czyli konwertuje każdy obiekt na serię XML (język ograniczenia w XML [CLiXML]) elementy danych do transmisji.However, because most live objects cannot be transmitted over the network, PowerShell "serializes" most of the objects sent in remote commands, that is, it converts each object into a series of XML (Constraint Language in XML [CLiXML]) data elements for transmission.

Gdy program PowerShell odbiera serializowany obiekt, konwertuje kod XML na deserializowany typ obiektu.When PowerShell receives a serialized object, it converts the XML into a deserialized object type. Deserializowany obiekt jest dokładnym rekordem właściwości programu lub składnika w poprzednim czasie, ale nie jest już "na żywo", czyli nie jest już bezpośrednio skojarzony ze składnikiem.The deserialized object is an accurate record of the properties of the program or component at a previous time, but it is no longer "live", that is, it is no longer directly associated with the component. Metody są usuwane, ponieważ nie są już skuteczne.And, the methods are removed because they are no longer effective.

Zazwyczaj można używać obiektów deserializowanych tak samo jak w przypadku korzystania z obiektów na żywo, ale należy pamiętać o ich ograniczeniach.Typically, you can use deserialized objects just as you would use live objects, but you must be aware of their limitations. Ponadto obiekty, które są zwracane przez Invoke-Command polecenie cmdlet, mają dodatkowe właściwości, które pomagają określić źródło polecenia.Also, the objects that are returned by the Invoke-Command cmdlet have additional properties that help you to determine the origin of the command.

Niektóre typy obiektów, takie jak obiekty DirectoryInfo i identyfikatory GUID, są konwertowane z powrotem na obiekty na żywo po ich odebraniu.Some object types, such as DirectoryInfo objects and GUIDs, are converted back into live objects when they are received. Te obiekty nie wymagają żadnej specjalnej obsługi ani formatowania.These objects do not need any special handling or formatting.

Aby uzyskać informacje na temat interpretacji i formatowania zdalnych danych wyjściowych, zobacz about_Remote_Output.For information about interpreting and formatting remote output, see about_Remote_Output.

Czy mogę zdalnie uruchamiać zadania w tle?Can I run background jobs remotely?

Tak.Yes. Zadanie w tle programu PowerShell to polecenie programu PowerShell, które działa asynchronicznie bez współpracy z sesją.A PowerShell background job is a PowerShell command that runs asynchronously without interacting with the session. Po uruchomieniu zadania w tle wiersz polecenia wraca natychmiast i można kontynuować pracę w sesji, gdy zadanie jest uruchamiane nawet przez dłuższy czas.When you start a background job, the command prompt returns immediately, and you can continue to work in the session while the job runs even if it runs for an extended period of time.

Zadanie w tle można uruchomić nawet wtedy, gdy inne polecenia są uruchomione, ponieważ zadania w tle są zawsze uruchamiane asynchronicznie w tymczasowej sesji.You can start a background job even while other commands are running because background jobs always run asynchronously in a temporary session.

Zadania w tle można uruchamiać na komputerze lokalnym lub zdalnym.You can run background jobs on a local or remote computer. Domyślnie zadanie w tle jest uruchamiane na komputerze lokalnym.By default, a background job runs on the local computer. Można jednak użyć parametru AsJob Invoke-Command polecenia cmdlet, aby uruchomić dowolne zdalne polecenie jako zadanie w tle.However, you can use the AsJob parameter of the Invoke-Command cmdlet to run any remote command as a background job. I można użyć polecenia, Invoke-Command Aby zdalnie uruchomić Start-Job polecenie.And, you can use Invoke-Command to run a Start-Job command remotely.

Aby uzyskać więcej informacji na temat zadań w tle w programie PowerShell, zobacz [about_Jobs (about_Jobs. MD)] i [about_Remote_Jobs (about_Remote_Jobs. MD)].For more information about background jobs in PowerShell , see [about_Jobs(about_Jobs.md)] and [about_Remote_Jobs(about_Remote_Jobs.md)].

Czy można uruchamiać programy systemu Windows na komputerze zdalnym?Can I run windows programs on a remote computer?

Poleceń zdalnych programu PowerShell można używać do uruchamiania programów opartych na systemie Windows na komputerach zdalnych.You can use PowerShell remote commands to run Windows-based programs on remote computers. Na przykład można uruchomić Shutdown.exe lub Ipconfig.exe na komputerze zdalnym.For example, you can run Shutdown.exe or Ipconfig.exe on a remote computer.

Nie można jednak użyć poleceń programu PowerShell, aby otworzyć interfejs użytkownika dla każdego programu na komputerze zdalnym.However, you cannot use PowerShell commands to open the user interface for any program on a remote computer.

Po uruchomieniu programu systemu Windows na komputerze zdalnym polecenie nie zostanie ukończone, a wiersz polecenia programu PowerShell nie zwraca, do momentu zakończenia programu lub do momentu naciśnięcia klawisza Ctrl + C , aby przerwać polecenie.When you start a Windows program on a remote computer, the command is not completed, and the PowerShell command prompt does not return, until the program is finished or until you press CTRL+C to interrupt the command. Jeśli na przykład uruchomisz Ipconfig.exe program na komputerze zdalnym, wiersz polecenia nie zostanie zwrócony do momentu Ipconfig.exe ukończenia.For example, if you run the Ipconfig.exe program on a remote computer, the command prompt does not return until Ipconfig.exe is completed.

Jeśli używasz poleceń zdalnych do uruchomienia programu, który ma interfejs użytkownika, rozpocznie się proces programu, ale interfejs użytkownika nie jest wyświetlany.If you use remote commands to start a program that has a user interface, the program process starts, but the user interface does not appear. Polecenie programu PowerShell nie jest ukończone i wiersz polecenia nie zwraca się, dopóki nie zostanie zatrzymany proces programu lub do momentu naciśnięcia klawisza Ctrl + C, co spowoduje przerwanie działania polecenia i zatrzymanie procesu.The PowerShell command is not completed, and the command prompt does not return until you stop the program process or until you press CTRL+C, which interrupts the command and stops the process.

Jeśli na przykład używasz polecenia programu PowerShell do uruchomienia Notepad na komputerze zdalnym, proces Notatnika zostanie uruchomiony na komputerze zdalnym, ale interfejs użytkownika Notatnika nie zostanie wyświetlony.For example, if you use a PowerShell command to run Notepad on a remote computer, the Notepad process starts on the remote computer, but the Notepad user interface does not appear. Aby przerwać polecenie i przywrócić wiersz polecenia, naciśnij klawisz Ctrl + C.To interrupt the command and restore the command prompt, press CTRL+C.

Czy mogę ograniczyć liczbę poleceń, które użytkownicy mogą zdalnie uruchamiać na komputerze?Can I limit the commands that users can run remotely on my computer?

Tak.Yes. Każda sesja zdalna musi korzystać z jednej z konfiguracji sesji na komputerze zdalnym.Every remote session must use one of the session configurations on the remote computer. Można zarządzać konfiguracjami sesji na komputerze (oraz uprawnieniami do tych konfiguracji sesji), aby określić, kto może uruchamiać polecenia zdalnie na komputerze i jakie polecenia mogą być uruchamiane.You can manage the session configurations on your computer (and the permissions to those session configurations) to determine who can run commands remotely on your computer and which commands they can run.

Konfiguracja sesji służy do konfigurowania środowiska dla sesji programu.A session configuration configures the environment for the session. Konfigurację można zdefiniować przy użyciu zestawu, który implementuje nową klasę konfiguracyjną lub przy użyciu skryptu uruchamianego w sesji programu.You can define the configuration by using an assembly that implements a new configuration class or by using a script that runs in the session. W konfiguracji można określić polecenia, które są dostępne w sesji programu.The configuration can determine the commands that are available in the session. Ponadto konfiguracja może obejmować ustawienia chroniące komputer, takie jak ustawienia ograniczające ilość danych, które sesja może odbierać zdalnie w pojedynczym obiekcie lub poleceniu.And, the configuration can include settings that protect the computer, such as settings that limit the amount of data that the session can receive remotely in a single object or command. Można również określić deskryptor zabezpieczeń, który określa uprawnienia wymagane do korzystania z konfiguracji.You can also specify a security descriptor that determines the permissions that are required to use the configuration.

Enable-PSRemotingPolecenie cmdlet tworzy domyślne konfiguracje sesji na komputerze: Microsoft. PowerShell, Microsoft. PowerShell. Workflow i Microsoft. PowerShell32 (tylko 64-bitowe systemy operacyjne).The Enable-PSRemoting cmdlet creates the default session configurations on your computer: Microsoft.PowerShell, Microsoft.PowerShell.Workflow, and Microsoft.PowerShell32 (64-bit operating systems only). Enable-PSRemoting Ustawia deskryptor zabezpieczeń dla konfiguracji, aby umożliwić korzystanie z nich tylko członkom grupy Administratorzy na komputerze.Enable-PSRemoting sets the security descriptor for the configuration to allow only members of the Administrators group on your computer to use them.

Za pomocą poleceń cmdlet konfiguracji sesji można edytować domyślne konfiguracje sesji, tworzyć nowe konfiguracje sesji oraz zmieniać deskryptory zabezpieczeń wszystkich konfiguracji sesji.You can use the session configuration cmdlets to edit the default session configurations, to create new session configurations, and to change the security descriptors of all the session configurations.

Począwszy od programu Windows PowerShell 3,0, New-PSSessionConfigurationFile polecenie cmdlet umożliwia tworzenie niestandardowych konfiguracji sesji za pomocą pliku tekstowego.Beginning in Windows PowerShell 3.0, the New-PSSessionConfigurationFile cmdlet lets you create custom session configurations by using a text file. Plik zawiera opcje ustawiania trybu języka i określania poleceń cmdlet i modułów, które są dostępne w sesjach korzystających z konfiguracji sesji.The file includes options for setting the language mode and for specifying the cmdlets and modules that are available in sessions that use the session configuration.

Gdy użytkownicy używają Invoke-Command New-PSSession poleceń cmdlet,, lub, Enter-PSSession mogą użyć parametru ConfigurationName , aby wskazać konfigurację sesji, która jest używana dla danej sesji.When users use the Invoke-Command, New-PSSession, or Enter-PSSession cmdlets, they can use the ConfigurationName parameter to indicate the session configuration that is used for the session. I mogą zmienić domyślną konfigurację używaną przez sesje przez zmianę wartości $PSSessionConfigurationName zmiennej preferencji w sesji.And, they can change the default configuration that their sessions use by changing the value of the $PSSessionConfigurationName preference variable in the session.

Więcej informacji o konfiguracjach sesji znajduje się w pomocy dotyczącej poleceń cmdlet dotyczących konfiguracji sesji.For more information about session configurations, see the Help for the session configuration cmdlets. Aby znaleźć polecenia cmdlet konfiguracji sesji, wpisz:To find the session configuration cmdlets, type:

Get-Command *PSSessionConfiguration

Co to jest wentylator i konfiguracja wentylatorów?What are fan in and fan out configurations?

Najbardziej typowym scenariuszem komunikacji zdalnej programu PowerShell obejmującym wiele komputerów jest konfiguracja jeden-do-wielu, w której jeden komputer lokalny (komputer administratora) uruchamia polecenia programu PowerShell na wielu komputerach zdalnych.The most common PowerShell remoting scenario involving multiple computers is the one-to-many configuration, in which one local computer (the administrator's computer) runs PowerShell commands on numerous remote computers. Jest to tzw. scenariusz "wentylator-out".This is known as the "fan-out" scenario.

Jednak w niektórych przedsiębiorstwach konfiguracja jest wiele-do-jednego, gdzie wiele komputerów klienckich łączy się z pojedynczym komputerem zdalnym, na którym działa program PowerShell, na przykład na serwerze plików lub kiosku.However, in some enterprises, the configuration is many-to-one, where many client computers connect to a single remote computer that is running PowerShell, such as a file server or a kiosk. Jest to tzw. Konfiguracja "wentylator-in".This is known as the "fan-in" configuration.

Komunikacja zdalna programu PowerShell obsługuje zarówno konfiguracje wentylatorów, jak i wentylatorów.PowerShell remoting supports both fan-out and fan-in configurations.

W przypadku konfiguracji wentylatorów program PowerShell korzysta z protokołu WS-Management (Web Services for Management) i usługi WinRM obsługującej implementację usługi WS-Management w firmie Microsoft.For the fan-out configuration, PowerShell uses the Web Services for Management (WS-Management) protocol and the WinRM service that supports the Microsoft implementation of WS-Management. Gdy komputer lokalny nawiązuje połączenie z komputerem zdalnym, WS-Management nawiązuje połączenie i używa wtyczki dla programu PowerShell, aby uruchomić proces hosta programu PowerShell (Wsmprovhost.exe) na komputerze zdalnym.When a local computer connects to a remote computer, WS-Management establishes a connection and uses a plug-in for PowerShell to start the PowerShell host process (Wsmprovhost.exe) on the remote computer. Użytkownik może określić alternatywny port, alternatywną konfigurację sesji i inne funkcje, aby dostosować połączenie zdalne.The user can specify an alternate port, an alternate session configuration, and other features to customize the remote connection.

Aby można było obsługiwać konfigurację "wentylator-in", program PowerShell używa internetowych usług informacyjnych (IIS) do hostowania usługi WS-Management w celu załadowania wtyczki programu PowerShell i uruchomienia programu PowerShell.To support the "fan-in" configuration, PowerShell uses internet Information Services (IIS) to host WS-Management, to load the PowerShell plug-in, and to start PowerShell. W tym scenariuszu zamiast uruchamiania każdej sesji programu PowerShell w osobnym procesie wszystkie sesje programu PowerShell są uruchamiane w tym samym procesie hosta.In this scenario, instead of starting each PowerShell session in a separate process, all PowerShell sessions run in the same host process.

Hosting usług IIS i wentylatory zdalne zarządzanie nie są obsługiwane w systemie Windows XP lub Windows Server 2003.IIS hosting and fan-in remote management is not supported in Windows XP or in Windows Server 2003.

W konfiguracji wentylatoru użytkownik może określić identyfikator URI połączenia i punkt końcowy HTTP, w tym transport, nazwę komputera, port i nazwę aplikacji.In a fan-in configuration, the user can specify a connection URI and an HTTP endpoint, including the transport, computer name, port, and application name. Usługi IIS przesyłają do aplikacji wszystkie żądania z określoną nazwą aplikacji.IIS forwards all the requests with a specified application name to the application. Wartość domyślna to WS-Management, który może hostować program PowerShell.The default is WS-Management, which can host PowerShell.

Można również określić mechanizm uwierzytelniania i uniemożliwić lub zezwolić na przekierowywanie z punktów końcowych HTTP i HTTPS.You can also specify an authentication mechanism and prohibit or allow redirection from HTTP and HTTPS endpoints.

Czy można testować komunikację zdalną na pojedynczym komputerze, a nie w domenie?Can I test remoting on a single computer not in a domain?

Tak.Yes. Komunikacja zdalna programu PowerShell jest dostępna nawet wtedy, gdy komputer lokalny nie znajduje się w domenie.PowerShell remoting is available even when the local computer is not in a domain. Funkcji zdalnych można używać do łączenia się z sesjami i tworzenia sesji na tym samym komputerze.You can use the remoting features to connect to sessions and to create sessions on the same computer. Funkcje te działają tak samo, jak w przypadku łączenia się z komputerem zdalnym.The features work the same as they do when you connect to a remote computer.

Aby uruchomić polecenia zdalne na komputerze w grupie roboczej, należy zmienić następujące ustawienia systemu Windows na komputerze.To run remote commands on a computer in a workgroup, change the following Windows settings on the computer.

Przestroga: te ustawienia mają wpływ na wszystkich użytkowników w systemie, dzięki czemu system może być bardziej narażony na złośliwy atak.Caution: These settings affect all users on the system and they can make the system more vulnerable to a malicious attack. Podczas wprowadzania tych zmian należy zachować ostrożność.Use caution when making these changes.

  • Windows Vista, Windows 7, Windows 8:Windows Vista, Windows 7, Windows 8:

    Utwórz następujący wpis rejestru, a następnie ustaw jego wartość na 1: LocalAccountTokenFilterPolicy w HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\SystemCreate the following registry entry, and then set its value to 1: LocalAccountTokenFilterPolicy in HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System

    Aby dodać ten wpis, można użyć następującego polecenia programu PowerShell:You can use the following PowerShell command to add this entry:

    $parameters = @{
      Path='HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System'
      Name='LocalAccountTokenFilterPolicy'
      propertyType='DWord'
      Value=1
    }
    New-ItemProperty @parameters
    
  • Windows Server 2003, Windows Server 2008, Windows Server 2012, Windows Server 2012 R2:Windows Server 2003, Windows Server 2008, Windows Server 2012, Windows Server 2012 R2:

    Nie są potrzeby żadne zmiany, ponieważ domyślne ustawienie zasad "dostęp sieciowy: udostępnianie i model zabezpieczeń dla kont lokalnych" ma wartość "klasyczny".No changes are needed because the default setting of the "Network Access: Sharing and security model for local accounts" policy is "Classic". Sprawdź ustawienie w przypadku zmiany.Verify the setting in case it has changed.

Czy można uruchamiać polecenia zdalne na komputerze w innej domenie?Can I run remote commands on a computer in another domain?

Tak.Yes. Zazwyczaj polecenia są uruchamiane bez błędów, ale może być konieczne użycie parametru Credential Invoke-Command New-PSSession poleceń cmdlet, lub, Enter-PSSession Aby podać poświadczenia członka grupy Administratorzy na komputerze zdalnym.Typically, the commands run without error, although you might need to use the Credential parameter of the Invoke-Command, New-PSSession, or Enter-PSSession cmdlets to provide the credentials of a member of the Administrators group on the remote computer. Jest to czasami wymagane nawet wtedy, gdy bieżący użytkownik jest członkiem grupy Administratorzy na komputerze lokalnym i zdalnym.This is sometimes required even when the current user is a member of the Administrators group on the local and remote computers.

Jeśli jednak komputer zdalny nie znajduje się w domenie, której ufa komputer lokalny, komputer zdalny może nie być w stanie uwierzytelnić poświadczeń użytkownika.However, if the remote computer is not in a domain that the local computer trusts, the remote computer might not be able to authenticate the user's credentials.

Aby włączyć uwierzytelnianie, użyj następującego polecenia, aby dodać komputer zdalny do listy zaufanych hostów na komputerze lokalnym w usłudze WinRM.To enable authentication, use the following command to add the remote computer to the list of trusted hosts for the local computer in WinRM. Wpisz polecenie w wierszu polecenia programu PowerShell.Type the command at the PowerShell prompt.

Set-Item WSMan:\localhost\Client\TrustedHosts -Value <Remote-computer-name>

Na przykład aby dodać komputer Serwer01 do listy zaufanych hostów na komputerze lokalnym, wpisz następujące polecenie w wierszu polecenia programu PowerShell:For example, to add the Server01 computer to the list of trusted hosts on the local computer, type the following command at the PowerShell prompt:

Set-Item WSMan:\localhost\Client\TrustedHosts -Value Server01

Czy program PowerShell obsługuje komunikację zdalną za pośrednictwem protokołu SSH?Does PowerShell support remoting over SSH?

Tak.Yes. Aby uzyskać więcej informacji, zobacz komunikacja zdalna programu PowerShell za pośrednictwem protokołu SSH.For more information, see PowerShell remoting over SSH.

Zobacz teżSee also

about_Remoteabout_Remote

about_Profilesabout_Profiles

about_PSSessionsabout_PSSessions

about_Remote_Jobsabout_Remote_Jobs

about_Remote_Variablesabout_Remote_Variables

Wywołaj polecenieInvoke-Command

New-PSSessionNew-PSSession