단일 Windows PowerShell 명령을 사용하여 하나 또는 수백 대의 컴퓨터에서 명령을 실행할 수 있습니다. Windows PowerShell은 WMI, RPC 및 WS-Management를 비롯한 다양한 기술을 사용하여 원격 컴퓨팅을 지원합니다.
구성 없이 원격 기능 지원
많은 Windows PowerShell cmdlet에는 하나 이상의 원격 컴퓨터에서 데이터를 수집하고 설정을 변경할 수 있도록 해주는 ComputerName 매개 변수가 있습니다. 이들은 다양한 통신 기술을 사용하며 대개 Windows PowerShell이 특별한 구성 없이 지원하는 모든 Windows 운영 체제에서 작동합니다.
이러한 cmdlet에는 다음이 포함됩니다.
- Restart-Computer
- Test-Connection
- Clear-EventLog
- Get-EventLog
- Get-HotFix
- Get-Process
- Get-Service
- Set-Service
- Get-HotFix
- Get-WmiObject
일반적으로 특별한 구성 없이 원격 기능을 지원하는 cmdlet에는 ComputerName 매개 변수가 있고 Session 매개 변수는 없습니다. 세션에서 이러한 cmdlet을 찾으려면 다음과 같이 입력하십시오.
get-command | where { $_.parameters.keys -contains "ComputerName" -and $_.parameters.keys -notcontains "Session"}
Windows PowerShell 원격 기능
WS-Management 프로토콜을 사용하는 Windows PowerShell 원격 기능은 하나 또는 여러 원격 컴퓨터에서 모든 Windows PowerShell 명령을 실행하고, 영구 연결을 설정하고, 1:1 대화형 세션을 시작하고, 여러 컴퓨터에서 스크립트를 실행할 수 있도록 해줍니다.
Windows PowerShell 원격 기능을 사용하려면 원격 관리를 사용하도록 원격 컴퓨터를 구성해야 합니다. 지침을 비롯한 자세한 내용은 about_Remote_Requirements를 참조하십시오.
Windows PowerShell 원격 기능을 구성한 후에는 여러 가지 원격 전략을 사용할 수 있습니다. 이 문서의 나머지 부분에서 설명하는 전략은 그 중 일부일 뿐입니다. 자세한 내용은 about_Remote 및 about_Remote_FAQ를 참조하십시오.
대화형 세션 시작
하나의 원격 컴퓨터와 대화형 세션을 시작하려면 Enter-PSSession cmdlet을 사용합니다. 예를 들어 Server01 원격 컴퓨터와 대화형 세션을 시작하려면 다음과 같이 입력하십시오.
enter-pssession Server01
명령 프롬프트가 변경되어 연결된 컴퓨터의 이름을 표시합니다. 여기에서부터 프롬프트에 입력하는 모든 명령은 원격 컴퓨터에서 실행되고 결과가 로컬 컴퓨터에 표시됩니다.
대화형 세션을 종료하려면 다음과 같이 입력하십시오.
exit-pssession
Enter-PSSession 및 Exit-PSSession cmdlet에 대한 자세한 내용은 Enter-PSSession 및 Exit-PSSession을 참조하십시오.
원격 명령 실행
하나 또는 여러 원격 컴퓨터에서 명령을 실행하려면 Invoke-Command cmdlet을 사용하십시오. 예를 들어 Server01 및 Server02 원격 컴퓨터에서 Get-UICulture 명령을 실행하려면 다음과 같이 입력하십시오.
invoke-command -computername Server01, Server02 {get-UICulture}
출력은 사용자의 컴퓨터로 반환됩니다.
LCID Name DisplayName PSComputerName ---- ---- ----------- -------------- 1033 en-US English (United States) server01.corp.fabrikam.com 1033 en-US English (United States) server02.corp.fabrikam.com
Invoke-Command cmdlet에 대한 자세한 내용은 Invoke-Command를 참조하십시오.
스크립트 실행
하나 또는 여러 원격 컴퓨터에서 스크립트를 실행하려면 Invoke-Command cmdlet의 FilePath 매개 변수를 사용하십시오. 스크립트는 로컬 컴퓨터에 있거나 로컬 컴퓨터에서 액세스할 수 있어야 합니다. 결과는 사용자의 로컬 컴퓨터로 반환됩니다.
예를 들어 다음 명령은 Server01 및 Server02 원격 컴퓨터에서 DiskCollect.ps1 스크립트를 실행합니다.
invoke-command -computername Server01, Server02 -filepath c:\Scripts\DiskCollect.ps1
Invoke-Command cmdlet에 대한 자세한 내용은 Invoke-Command를 참조하십시오.
영구 연결 설정
데이터를 공유하는 일련의 관련 명령을 실행하려면 원격 컴퓨터에서 세션을 만든 다음 Invoke-Command cmdlet을 사용하여 사용자가 직접 만든 세션에서 명령을 실행합니다. 원격 세션을 만들려면 New-PSSession cmdlet을 사용합니다.
예를 들어 다음 명령은 Server01 컴퓨터에 원격 세션을 만들고 Server02 컴퓨터에 다른 원격 세션을 만듭니다. 그리고 세션 개체를 $s 변수에 저장합니다.
$s = new-pssession -computername Server01, Server02
세션이 설정된 후에는 세션에서 명령을 실행할 수 있습니다. 세션은 영구적이기 때문에 한 명령에서 데이터를 수집하여 후속 명령에서 사용할 수 있습니다.
예를 들어 다음 명령은 $s 변수에 있는 세션에서 Get-Hotfix 명령을 실행하고 그 결과를 $h 변수에 저장합니다. $h 변수는 $s에 있는 각 세션에서 만들어지지만 로컬 세션에는 존재하지 않습니다.
invoke-command -session $s {$h = get-hotfix}
이제 $h 변수에 있는 데이터를 다음과 같은 후속 명령에서 사용할 수 있습니다. 결과는 로컬 컴퓨터에 표시됩니다.
invoke-command -session $s {$h | where {$_.installedby -ne "NTAUTHORITY\SYSTEM"
고급 원격 기능
Windows PowerShell 원격 관리는 바로 여기에서 시작됩니다. Windows PowerShell과 함께 설치된 cmdlet을 사용함으로써 로컬 및 원격 끝 모두에서 원격 세션을 설정 및 구성하고, 사용자 지정된 세션 및 제한된 세션을 만들고, 원격 세션에서 암시적으로 실제 실행되는 원격 세션으로부터 사용자가 명령을 가져올 수 있도록 허용하고, 원격 세션의 보안을 구성할 수 있습니다.
원격 구성을 쉽게 수행할 수 있도록 Windows PowerShell에는 WS-Management 공급자가 포함되어 있습니다. 공급자가 만드는 WSMAN: 드라이브에서 로컬 컴퓨터 및 원격 컴퓨터의 구성 설정 계층 구조를 탐색할 수 있습니다. WS-Management 공급자에 대한 자세한 내용은 WSMan Provider 및 about_WS-Management_Cmdlets를 참조하거나 Windows PowerShell 콘솔에서 "get-help wsman"을 입력하십시오.
자세한 내용은 about_Remote_FAQ, New-PSSessionConfiguration 및 Import-PSSession을 참조하십시오. 원격 기능 오류에 대한 자세한 내용은 about_Remote_Troubleshooting을 참조하십시오.
참고 항목