about_Remote
업데이트 날짜: 2014년 5월
적용 대상: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0
항목
about_Remote
간단한 설명
Windows PowerShell에서 원격 명령을 실행하는 방법을 설명합니다.
자세한 설명
임시 또는 영구 연결을 사용하여 단일 컴퓨터 또는 여러 컴퓨터에서 원격 명령을 실행할 수 있습니다. 또한 단일 원격 컴퓨터와의 대화형 세션을 시작할 수 있습니다.
이 항목에서는 다양한 유형의 원격 명령을 실행하는 방법을 보여 주는 일련의 예제를 제공합니다. 이러한 기본 명령을 사용해본 후에 이러한 명령에서 사용되는 각 cmdlet을 설명하는 도움말 항목을 읽어보세요. 이 항목에서는 세부 정보를 제공하고 요구에 맞게 명령을 수정하는 방법을 설명합니다.
참고
Windows PowerShell® 원격 기능을 사용하려면 로컬 및 원격 컴퓨터가 원격 기능에 맞게 구성되어야 합니다. 자세한 내용은 about_Remote_Requirements를 참조하세요.
대화형 세션(ENTER-PSSESSION)을 시작하는 방법
원격 컴퓨터를 실행하는 가장 쉬운 방법은 원격 컴퓨터와의 대화형 세션을 시작하는 것입니다.
세션이 시작되면 사용자가 입력하는 명령은 원격 컴퓨터에서 직접 입력하는 것처럼 원격 컴퓨터에서 실행됩니다. 각 대화형 세션에서 한 대의 컴퓨터에만 연결할 수 있습니다.
대화형 세션을 시작하려면 Enter-PSSession cmdlet을 사용합니다. 다음 명령은 Server01 컴퓨터와 대화형 세션을 시작합니다.
Enter-PSSession Server01
명령 프롬프트는 Server01 컴퓨터에 연결되어 있음을 나타내도록 변경됩니다.
Server01\PS>
이제 Server01 컴퓨터에서 명령을 입력할 수 있습니다.
대화형 세션을 종료하려면 다음을 입력합니다.
Exit-PSSession
자세한 내용은 Enter-PSSession을 참조하세요.
COMPUTERNAME 매개 변수가 있는 CMDLET을 사용하여 원격 데이터를 가져오는 방법
일부 cmdlet에는 원격 컴퓨터에서 개체를 가져올 수 있도록 하는 ComputerName 매개 변수가 있습니다.
이러한 cmdlet은 WS-Management 기반 Windows PowerShell 원격 기능을 사용하지 않으므로 Windows PowerShell을 실행하는 모든 컴퓨터에서 이러한 cmdlet의 ComputerName 매개 변수를 사용할 수 있습니다. Windows PowerShell 원격 기능을 위해 컴퓨터를 구성할 필요는 없으며 컴퓨터가 원격 기능을 위한 시스템 요구 사항을 충족할 필요도 없습니다.
다음 cmdlet에는 ComputerName 매개 변수가 있습니다.
Clear-EventLog Limit-EventLog
Get-Counter New-EventLog
Get-EventLog Remove-EventLog
Get-HotFix Restart-Computer
Get-Process Show-EventLog
Get-Service Stop-Computer
Get-WinEvent Test-Connection
Get-WmiObject Write-EventLog
예를 들어 다음 명령은 Server01 원격 컴퓨터에서 서비스를 가져옵니다.
Get-Service -ComputerName Server01
일반적으로 특별한 구성 없이 원격 작업을 지원하는 cmdlet에는 ComputerName 매개 변수는 있지만 Session 매개 변수는 없습니다. 세션에서 이러한 cmdlet을 찾으려면 다음과 같이 입력합니다.
Get-Command | where { $_.Parameters.Keys -contains "ComputerName" -and $_.Parameters.Keys -NotContains "Session"}
원격 명령을 실행하는 방법
원격 컴퓨터에서 다른 명령을 실행하려면 Invoke-Command cmdlet을 사용합니다.
단일 명령 또는 몇 가지 관련 없는 명령을 실행하려면 Invoke-Command의 ComputerName 매개 변수를 사용하여 원격 컴퓨터를 지정합니다. ScriptBlock 매개 변수를 사용하여 명령을 지정합니다.
예를 들어 다음 명령은 Server01 컴퓨터에 대해 Get-Culture 명령을 실행합니다.
Invoke-Command -ComputerName Server01 -ScriptBlock {Get-Culture}
ComputerName 매개 변수는 한 대 또는 여러 대의 컴퓨터에서 단일 명령 또는 여러 개의 관련 없는 명령을 실행하는 상황을 위해 고안되었습니다. 원격 컴퓨터에 대해 영구 연결을 설정하려면 Session 매개 변수를 사용합니다.
영구 연결(PSSESSION)을 만드는 방법
Invoke-Command cmdlet의 ComputerName 매개 변수를 사용하는 경우 Windows PowerShell은 해당 명령에 대해서만 연결을 설정합니다. 명령이 완료될 때 연결을 닫습니다. 명령에 정의된 모든 변수 또는 함수가 손실됩니다.
원격 컴퓨터에 대해 영구 연결을 만들려면 New-PSSession cmdlet을 사용합니다. 예를 들어 다음 명령은 Server01 및 Server02 컴퓨터에 PSSession을 만든 후 PSSession을 $s 변수에 저장합니다.
$s = New-PSSession -ComputerName Server01, Server02
PSSESSION에서 명령을 실행하는 방법
PSSession을 사용하는 경우 함수, 별칭 및 변수 값과 같은 데이터를 공유하는 일련의 원격 명령을 실행할 수 있습니다. PSSession에서 명령을 실행하려면 Invoke-Command cmdlet의 Session 매개 변수를 사용합니다.
예를 들어 다음 명령은 Invoke-Command cmdlet을 사용하여 Server01 및 Server02 컴퓨터의 PSSession에서 Get-Process 명령을 실행합니다. 이 명령은 각 PSSession의 $p 변수에 프로세스를 저장합니다.
Invoke-Command -Session $s -ScriptBlock {$p = Get-Process}
PSSession은 영구 연결을 사용하므로 $p 변수를 사용하는 동일한 PSSession에서 다른 명령을 실행할 수 있습니다. 다음 명령은 $p에 저장되는 프로세스의 수를 계산합니다.
Invoke-Command -Session $s -ScriptBlock {$p.count}
여러 컴퓨터에서 원격 명령을 실행하는 방법
여러 컴퓨터에서 원격 명령을 실행하려면 Invoke-Command의 ComputerName 매개 변수 값에 모든 컴퓨터 이름을 입력합니다. 이름은 쉼표로 구분합니다.
예를 들어 다음 명령은 세 대의 컴퓨터에 대해 Get-Culture 명령을 실행합니다.
Invoke-Command -ComputerName S1, S2, S3 -ScriptBlock {Get-Culture}
또한 여러 PSSession에서 명령을 실행할 수도 있습니다. 다음 명령은 Server01, Server02, 및 Server03 컴퓨터에서 PSSession을 만들고 각 PSSession에서 Get-Culture 명령을 실행합니다.
$s = New-PSSession -ComputerName S1, S2, S3
Invoke-Command -Session $s -ScriptBlock {Get-Culture}
컴퓨터의 로컬 컴퓨터 목록을 포함하려면 로컬 컴퓨터의 이름을 입력하거나, 점(.)을 입력하거나, "localhost"를 입력합니다.
Invoke-Command -ComputerName S1, S2, S3, localhost -ScriptBlock {Get-Culture}
원격 컴퓨터에서 스크립트를 실행하는 방법
원격 컴퓨터에서 로컬 스크립트를 실행하려면 Invoke-Command의 FilePath 매개 변수를 사용합니다.
예를 들어 다음 명령은 S1 및 S2 컴퓨터에서 Sample.ps1 스크립트를 실행합니다. 여기에 섹션 본문이 삽입됩니다.
Invoke-Command -ComputerName S1, S2 -FilePath C:\Test\Sample.ps1
스크립트의 결과가 로컬 컴퓨터에 반환됩니다. 파일을 복사할 필요는 없습니다.
원격 명령을 중지하는 방법
명령을 중단하려면 Ctrl+C를 누릅니다. 인터럽트 요청이 원격 컴퓨터로 전달되고 원격 명령을 종료합니다.
자세한 내용
-- 원격 기능을 위한 시스템 요구 사항에 대한 자세한 내용은 about_Remote_Requirements를 참조하세요.
-- 원격 출력 형식 지정에 대한 도움말을 보려면 about_Remote_Output을 참조하세요.
-- 원격 기능이 작동하는 방식, 원격 데이터를 관리하는 방법, 특별한 구성, 보안 문제 및 기타 질문과 대답에 대한 자세한 내용은 about_Remote_FAQ를 참조하세요.
-- 원격 오류 해결에 대한 도움말을 보려면 about_Remote_Troubleshooting을 참조하세요.
-- PSSession 및 영구 연결에 대한 자세한 내용은 about_PSSessions를 참조하세요.
-- Windows PowerShell 백그라운드 작업에 대한 자세한 내용은 about_Jobs를 참조하세요.
키워드
about_Remoting
참고 항목
about_PSSessions
about_Remote_Disconnected_Sessions
about_Remote_Requirements
about_Remote_FAQ
about_Remote_TroubleShooting
about_Remote_Variables
Enter-PSSession
Invoke-Command
New-PSSession