간단한 설명
PowerShell에서 원격 명령을 실행하는 방법을 설명합니다.
긴 설명
임시 또는 영구 연결을 사용하여 단일 또는 여러 원격 컴퓨터에서 원격 명령을 실행할 수 있습니다. 단일 원격 컴퓨터로 대화형 세션을 시작할 수도 있습니다.
참고 항목
PowerShell 원격을 사용하려면 원격에 대한 로컬 및 원격 컴퓨터를 구성해야 합니다. 자세한 내용은 about_Remote_Requirements 참조하세요.
대화형 세션을 시작하는 방법
원격 명령을 실행하는 가장 쉬운 방법은 원격 컴퓨터로 대화형 세션을 시작하는 것입니다.
세션이 시작되면 입력한 명령이 원격 컴퓨터에 직접 입력한 것처럼 원격 컴퓨터에서 실행됩니다. 각 대화형 세션에서 하나의 컴퓨터에만 연결할 수 있습니다.
대화형 세션을 시작하려면 cmdlet을 Enter-PSSession 사용합니다. 다음 명령은 Server01 컴퓨터에서 대화형 세션을 시작합니다.
Enter-PSSession Server01
PowerShell은 원격 컴퓨터의 이름을 포함하도록 명령 프롬프트를 변경합니다.
Server01\PS>
이제 Server01 컴퓨터에서 명령을 입력할 수 있습니다.
대화형 세션을 종료하려면 다음을 입력합니다.
Exit-PSSession
자세한 내용은 Enter-PSSession을 참조 하세요.
COMPUTERNAME 매개 변수가 있는 CMDLET을 사용하는 방법
여러 cmdlet에는 원격 컴퓨터에서 개체를 가져올 수 있는 ComputerName 매개 변수가 있습니다.
이러한 cmdlet은 WS 관리 기반 PowerShell 원격을 사용하지 않으므로 PowerShell을 실행하는 모든 컴퓨터에서 이러한 cmdlet의 ComputerName 매개 변수를 사용할 수 있습니다. 컴퓨터는 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-Object {
$_.Parameters.Keys -contains 'ComputerName' -and
$_.Parameters.Keys -notcontains 'Session'
}
원격 명령을 실행하는 방법
원격 컴퓨터에서 다른 명령을 실행하려면 cmdlet을 Invoke-Command 사용합니다.
단일 명령 또는 관련 없는 몇 가지 명령을 실행하려면 ComputerName원격 컴퓨터를 지정합니다. ScriptBlock 매개 변수를 사용하여 명령을 지정합니다.
예를 들어 다음 명령은 Server01 컴퓨터에서 명령을 실행 Get-Culture 합니다.
Invoke-Command -ComputerName Server01 -ScriptBlock {Get-Culture}
영구 연결을 만드는 방법
cmdlet의 ComputerName 매개 변수를 Invoke-Command 사용하는 경우 PowerShell은 원격 컴퓨터에 대한 임시 연결을 설정합니다. 명령이 완료되면 연결을 닫습니다. 이 임시 세션에 정의된 변수 또는 함수는 모두 손실됩니다.
원격 컴퓨터에 대한 영구 연결을 만들려면 cmdlet을 New-PSSession 사용합니다. 예를 들어 다음 명령은 Server01 및 Server02 컴퓨터에 PSSessions를 만든 다음 PSSessions를 변수에 $s 저장합니다.
$s = New-PSSession -ComputerName Server01, Server02
PSSession에서 명령을 실행하는 방법
PSSession을 사용하면 함수, 별칭 및 변수 값과 같은 데이터를 공유하는 일련의 원격 명령을 실행할 수 있습니다. PSSession에서 명령을 실행하려면 cmdlet의 Session 매개 변수를 Invoke-Command 사용합니다.
예를 들어 다음 명령은 cmdlet을 사용하여 Invoke-Command Server01 및 Server02 컴퓨터의 PSSessions에서 명령을 실행 Get-Process 합니다.
이 명령은 각 PSSession의 $p 변수에 프로세스를 저장합니다.
Invoke-Command -Session $s -ScriptBlock {$p = Get-Process}
PSSession은 영구 연결을 사용하므로 변수를 사용하는 $p 동일한 PSSession에서 다른 명령을 실행할 수 있습니다. 다음 명령은 에 저장된 프로세스 수를 계산합니다 $p.
Invoke-Command -Session $s -ScriptBlock {$p.Count}
여러 컴퓨터에서 원격 명령을 실행하는 방법
여러 컴퓨터에서 원격 명령을 실행하려면 ComputerName에 모든 컴퓨터 이름을 입력합니다. 이름을 쉼표로 구분합니다.
예를 들어 다음 명령은 세 대의 컴퓨터에서 Get-Culture 명령을 실행합니다.
Invoke-Command -ComputerName S1, S2, S3 -ScriptBlock {Get-Culture}
여러 PSSessions에서 명령을 실행할 수도 있습니다. 다음 명령은 Server01, Server02 및 Server03 컴퓨터에서 PSSessions를 만든 다음 각 PSSessions에서 명령을 실행 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}
원격 컴퓨터에서 스크립트를 실행하는 방법
원격 컴퓨터에서 로컬 스크립트를 실행하려면 .의 FilePathInvoke-Command사용합니다. 파일을 복사할 필요가 없습니다. 예를 들어 다음 명령은 S1 및 S2 컴퓨터에서 스크립트를 실행 Sample.ps1 합니다.
Invoke-Command -ComputerName S1, S2 -FilePath C:\Test\Sample.ps1
PowerShell은 스크립트의 결과를 로컬 컴퓨터에 반환합니다.
원격 명령을 중지하는 방법
명령을 중단하려면 Ctrl c다. PowerShell은 원격 명령을 종료하는 원격 컴퓨터에 인터럽트 요청을 전달합니다.
자세한 정보 알아보기
원격에 대한 시스템 요구 사항에 대한 자세한 내용은 about_Remote_Requirements 참조하세요.
원격 출력의 서식 지정에 대한 도움말은 about_Remote_Output 참조하세요.
원격 작동 방식, 원격 데이터 관리 방법, 특수 구성, 보안 문제 및 기타 자주 묻는 질문에 대한 자세한 내용은 PowerShell 원격 FAQ를 참조 하세요.
원격 오류 해결에 대한 도움말은 about_Remote_Troubleshooting 참조하세요.
PSSessions 및 영구 연결에 대한 자세한 내용은 about_PSSessions 참조하세요.
PowerShell 백그라운드 작업에 대한 자세한 내용은 about_Jobs 참조하세요.
참고하십시오
PowerShell