원격 명령 실행Running Remote Commands

단일 PowerShell 명령으로 한 대 이상의 컴퓨터에서 명령을 실행할 수 있습니다.You can run commands on one or hundreds of computers with a single PowerShell command. Windows PowerShell에서는 WMI, RPC, WS-Management 등과 같은 다양한 기술을 사용하여 원격 컴퓨팅을 지원합니다.Windows PowerShell supports remote computing by using various technologies, including WMI, RPC, and WS-Management.

PowerShell Core는 WMI, WS-Management 및 SSH 원격 기능을 지원합니다.PowerShell Core supports WMI, WS-Management, and SSH remoting. RPC는 더 이상 지원되지 않습니다.RPC is no longer supported.

PowerShell Core의 원격 작업에 대한 자세한 내용은 다음 문서를 참조하세요.For more information about remoting in PowerShell Core, see the following articles:

구성 없이 Windows PowerShell 원격 작업Windows PowerShell Remoting Without Configuration

많은 Windows PowerShell cmdlet에서는 데이터를 수집하고 하나 이상의 원격 컴퓨터에서 설정을 변경할 수 있는 ComputerName 매개 변수를 사용합니다.Many Windows PowerShell cmdlets have the ComputerName parameter that enables you to collect data and change settings on one or more remote computers. 이러한 cmdlet은 다양한 통신 프로토콜을 사용하고, 특별한 구성 없이도 모든 Windows 운영 체제에서 작동합니다.These cmdlets use varying communication protocols and work on all Windows operating systems without any special configuration.

이러한 cmdlet은 다음과 같습니다.These cmdlets include:

일반적으로 특별한 구성 없이 원격 작업을 지원하는 cmdlet에는 ComputerName 매개 변수는 있지만 Session 매개 변수는 없습니다.Typically, cmdlets that support remoting without special configuration have the ComputerName parameter and don't have the Session parameter. 세션에서 이러한 cmdlet을 찾으려면 다음과 같이 입력합니다.To find these cmdlets in your session, type:

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

Windows PowerShell 원격 작업Windows PowerShell Remoting

WS-Management 프로토콜에서 Windows PowerShell 원격 작업을 사용하면 한 대 이상의 원격 컴퓨터에서 Windows PowerShell 명령을 실행할 수 있습니다.Using the WS-Management protocol, Windows PowerShell remoting lets you run any Windows PowerShell command on one or more remote computers. 원격 컴퓨터에서 영구 연결을 설정하고, 대화형 세션을 시작하고, 스크립트를 실행할 수 있습니다.You can establish persistent connections, start interactive sessions, and run scripts on remote computers.

Windows PowerShell 원격 작업을 사용하려면 원격 관리를 위해 원격 컴퓨터를 구성해야 합니다.To use Windows PowerShell remoting, the remote computer must be configured for remote management. 자세한 내용과 지침은 원격 요구 사항 정보를 참조하세요.For more information, including instructions, see About Remote Requirements.

Windows PowerShell 원격 작업을 구성한 후 다양한 원격 전략을 사용할 수 있습니다.Once you have configured Windows PowerShell remoting, many remoting strategies are available to you. 이 문서에는 이러한 전략 중 일부만 나와 있습니다.This article lists just a few of them. 자세한 내용은 원격 기능 정보를 참조하세요.For more information, see About Remote.

대화형 세션 시작Start an Interactive Session

단일 원격 컴퓨터와 대화형 세션을 시작하려면 Enter-PSSession cmdlet을 사용합니다.To start an interactive session with a single remote computer, use the Enter-PSSession cmdlet. 예를 들어 Server01 원격 컴퓨터와 대화형 세션을 시작하려면 다음과 같이 입력합니다.For example, to start an interactive session with the Server01 remote computer, type:

Enter-PSSession Server01

명령 프롬프트가 변경되어 원격 컴퓨터의 이름이 표시됩니다.The command prompt changes to display the name of the remote computer. 프롬프트에 입력하는 명령이 원격 컴퓨터에서 실행되고 그 결과가 로컬 컴퓨터에 표시됩니다.Any commands that you type at the prompt run on the remote computer and the results are displayed on the local computer.

대화형 세션을 종료하려면 다음을 입력합니다.To end the interactive session, type:

Exit-PSSession

Enter-PSSession 및 Exit-PSSession cmdlet에 대한 자세한 내용은 다음을 참조하세요.For more information about the Enter-PSSession and Exit-PSSession cmdlets, see:

원격 명령 실행Run a Remote Command

한 대 이상의 컴퓨터에서 명령을 실행하려면 Invoke-Command cmdlet을 사용합니다.To run a command on one or more computers, use the Invoke-Command cmdlet. 예를 들어 Server01 및 Server02 원격 컴퓨터에서 Get-UICulture 명령을 실행하려면 다음과 같이 입력합니다.For example, to run a Get-UICulture command on the Server01 and Server02 remote computers, type:

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

출력은 사용자의 컴퓨터에 반환됩니다.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

스크립트 실행Run a Script

한 대 이상의 원격 컴퓨터에서 스크립트를 실행하려면 Invoke-Command cmdlet의 FilePath 매개 변수를 사용합니다.To run a script on one or many remote computers, use the FilePath parameter of the Invoke-Command cmdlet. 스크립트는 로컬 컴퓨터에 있거나 로컬 컴퓨터에 액세스할 수 있어야 합니다.The script must be on or accessible to your local computer. 결과는 로컬 컴퓨터에 반환됩니다.The results are returned to your local computer.

예를 들어 다음 명령은 Server01 및 Server02 원격 컴퓨터에서 DiskCollect.ps1 스크립트를 실행합니다.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

영구 연결 설정Establish a Persistent Connection

New-PSSession cmdlet을 사용하여 원격 컴퓨터에서 영구 세션을 만듭니다.Use the New-PSSession cmdlet to create a persistent session on a remote computer. 다음 예제에서는 Server01 및 Server02에 원격 세션을 만듭니다.The following example creates remote sessions on Server01 and Server02. 세션 개체는 $s 변수에 저장됩니다.The session objects are stored in the $s variable.

$s = New-PSSession -ComputerName Server01, Server02

세션을 설정했으므로 이제 해당 세션에서 명령을 실행할 수 있습니다.Now that the sessions are established, you can run any command in them. 세션이 영구 세션이므로 명령을 실행하여 데이터를 수집하고 다른 명령에서 해당 데이터를 사용할 수 있습니다.And because the sessions are persistent, you can collect data from one command and use it in another command.

예를 들어 다음 명령은 $s 변수의 세션에서 Get-Hotfix 명령을 실행하고 결과를 $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. $h 변수는 $s의 각 세션에서 생성되지만 로컬 세션에는 없습니다.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}

이제 동일한 세션에서 다른 명령에 $h 변수의 데이터를 사용할 수 있습니다.Now you can use the data in the $h variable with other commands in the same session. 결과는 로컬 컴퓨터에 표시됩니다.The results are displayed on the local computer. 예:For example:

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

고급 원격 작업Advanced Remoting

Windows PowerShell 원격 관리가 여기에서 시작됩니다.Windows PowerShell remote management just begins here. Windows PowerShell과 함께 설치되는 cmdlet을 사용하여 로컬 끝점과 원격 끝점 모두에서 원격 세션을 설정하여 구성하고, 사용자 지정되고 제한된 세션을 만들고, 사용자가 원격 세션에서 암시적으로 실행되는 명령을 원격 세션에서 가져오도록 허용하고, 원격 세션의 보안을 구성하는 등과 같은 작업을 수행할 수 있습니다.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.

Windows PowerShell에는 WSMan 공급자가 포함됩니다.Windows PowerShell includes a WSMan provider. 공급자는 로컬 컴퓨터와 원격 컴퓨터에서 구성 설정 계층을 탐색할 수 있는 WSMAN: 드라이브를 만듭니다.The provider creates a WSMAN: drive that lets you navigate through a hierarchy of configuration settings on the local computer and remote computers.

WSMan 공급자에 대한 자세한 내용을 보려면 WSMan 공급자WS-Management Cmdlet 정보를 참조하거나 Windows PowerShell 콘솔에서 "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.

자세한 내용은 다음을 참조하세요.For more information, see:

원격 오류에 대한 도움이 필요한 경우 about_Remote_Troubleshooting을 참조하세요.For help with remoting errors, see about_Remote_Troubleshooting.

참고 항목See Also