about_Remote

업데이트 날짜: 2012년 8월

적용 대상: Windows PowerShell 2.0, Windows PowerShell 3.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