다음을 통해 공유


원격 명령 실행

단일 PowerShell 명령으로 한 대 이상의 컴퓨터에서 명령을 실행할 수 있습니다. Windows PowerShell은 WMI, RPC 및 WS-Management를 비롯한 다양한 기술을 사용하여 원격 컴퓨팅을 지원합니다.

PowerShell은 WMI, WS-Management 및 SSH 원격 제어를 지원합니다. PowerShell 7 이상에서는 RPC가 Windows에서만 지원됩니다.

PowerShell에서 원격에 대한 자세한 내용은 다음 문서를 참조하세요.

구성 없이 Windows PowerShell 원격 작업

많은 Windows PowerShell cmdlet에서는 데이터를 수집하고 하나 이상의 원격 컴퓨터에서 설정을 변경할 수 있는 ComputerName 매개 변수를 사용합니다. 이러한 cmdlet은 다양한 통신 프로토콜을 사용하고, 특별한 구성 없이도 모든 Windows 운영 체제에서 작동합니다.

이러한 cmdlet은 다음과 같습니다.

일반적으로 특별한 구성 없이 원격 작업을 지원하는 cmdlet에는 ComputerName 매개 변수는 있지만 Session 매개 변수는 없습니다. 세션에서 이러한 cmdlet을 찾으려면 다음과 같이 입력합니다.

Get-Command | Where-Object {
    $_.Parameters.Keys -contains "ComputerName" -and
    $_.Parameters.Keys -notcontains "Session"
}

Windows PowerShell 원격 제어

WS-Management 프로토콜을 사용하여 Windows PowerShell 원격 기능을 사용하면, 하나 이상의 원격 컴퓨터에서 Windows PowerShell 명령을 실행할 수 있습니다. 영구 연결을 설정하고, 대화형 세션을 시작하고, 원격 컴퓨터에서 스크립트를 실행할 수 있습니다.

Windows PowerShell 원격을 사용하려면 원격 컴퓨터가 원격 관리를 위해 설정되어 있어야 합니다. 지침을 비롯한 자세한 내용은 원격 요구 사항참조하세요.

Windows PowerShell 원격 설정을 완료한 후, 다양한 원격 전략을 선택하여 사용할 수 있습니다. 이 문서에는 몇 가지 항목만 나열됩니다. 자세한 내용은 원격에 대해 참조하세요.

대화형 세션 시작

단일 원격 컴퓨터에서 대화형 세션을 시작하려면 Enter-PSSession cmdlet을 사용합니다. 예를 들어 Server01 원격 컴퓨터에서 대화형 세션을 시작하려면 다음을 입력합니다.

Enter-PSSession Server01

명령 프롬프트가 변경되면 원격 컴퓨터의 이름이 표시됩니다. 프롬프트에 입력하는 모든 명령은 원격 컴퓨터에서 실행되고 결과는 로컬 컴퓨터에 표시됩니다.

대화형 세션을 종료하려면 다음을 입력합니다.

Exit-PSSession

Enter-PSSessionExit-PSSession cmdlet에 대한 자세한 내용은 다음을 참조하세요.

원격 명령 실행

하나 이상의 컴퓨터에서 명령을 실행하려면 Invoke-Command cmdlet을 사용합니다. 예를 들어 Server01 및 Server02 원격 컴퓨터에서 Get-UICulture 명령을 실행하려면 다음을 입력합니다.

Invoke-Command -ComputerName Server01, Server02 -ScriptBlock {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의 FilePath 매개 변수를 사용합니다. 스크립트는 로컬 컴퓨터에 있거나 액세스할 수 있어야 합니다. 결과는 로컬 컴퓨터에 반환됩니다.

예를 들어 다음 명령은 원격 컴퓨터, Server01 및 Server02에서 DiskCollect.ps1 스크립트를 실행합니다.

Invoke-Command -ComputerName Server01, Server02 -FilePath C:\Scripts\DiskCollect.ps1

영구 연결 설정

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 "NT AUTHORITY\SYSTEM"}}

고급 원격 제어

PowerShell에는 다음을 수행할 수 있는 cmdlet이 포함되어 있습니다.

  • 로컬 및 원격 끝 모두에서 원격 세션 구성 및 만들기
  • 사용자 지정 및 제한된 세션 만들기
  • 원격 세션에서 암시적으로 실행되는 명령 가져오기
  • 원격 세션의 보안 구성

Windows의 PowerShell에는 WSMan 공급자가 포함되어 있습니다. 공급자는 로컬 컴퓨터 및 원격 컴퓨터에서 구성 설정의 계층 구조를 탐색할 수 있는 WSMan: 드라이브를 만듭니다.

WSMan 공급자에 대한 자세한 내용은 WSMan 공급자Cmdlet에 대한 정보 WS-Management를 참조하거나, Windows PowerShell 콘솔에서 Get-Help WSMan를 입력하십시오.

자세한 내용은 다음을 참조하세요.

원격 오류에 대한 도움말은 about_Remote_Troubleshooting을 참조하세요.

또한 참조하십시오