다음을 통해 공유


원격 정보

간단한 설명

Windows PowerShell 원격 명령을 실행하는 방법을 설명합니다.

자세한 설명

임시 또는 영구 연결을 사용하여 단일 컴퓨터 또는 여러 컴퓨터에서 원격 명령을 실행할 수 있습니다. 단일 원격 컴퓨터로 대화형 세션을 시작할 수도 있습니다.

이 항목에서는 다양한 유형의 원격 명령을 실행하는 방법을 보여 주는 일련의 예제를 제공합니다. 이러한 기본 명령을 시도한 후 이러한 명령에 사용되는 각 cmdlet을 설명하는 도움말 topics 읽습니다. topics 세부 정보를 제공하고 요구 사항에 맞게 명령을 수정하는 방법을 설명합니다.

참고: 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 관리 기반 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-Object {
	$_.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 컴퓨터에 PSSessions를 만든 다음 PSSessions를 $s 변수에 저장합니다.

$s = New-PSSession -ComputerName Server01, Server02

PSSESSION에서 명령을 실행하는 방법

PSSession을 사용하면 함수, 별칭 및 변수 값과 같은 데이터를 공유하는 일련의 원격 명령을 실행할 수 있습니다. PSSession에서 명령을 실행하려면 Invoke-Command cmdlet의 Session 매개 변수를 사용합니다.

예를 들어 다음 명령은 Invoke-Command cmdlet을 사용하여 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}

여러 컴퓨터에서 원격 명령을 실행하는 방법

여러 컴퓨터에서 원격 명령을 실행하려면 Invoke-Command의 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}

원격 컴퓨터에서 스크립트를 실행하는 방법

원격 컴퓨터에서 로컬 스크립트를 실행하려면 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.

  • PSSessions 및 영구 연결에 대한 자세한 내용은 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