about_Remote_Variables

업데이트 날짜: 2014년 5월

적용 대상: Windows PowerShell 4.0, Windows PowerShell 5.0

항목

about_Remote_Variables

간단한 설명

원격 명령에서 로컬 및 원격 변수를 사용하는 방법을 설명합니다.

자세한 설명

원격 컴퓨터에서 실행되는 명령에서 변수를 사용할 수 있습니다. 변수에 값을 할당한 다음 값 대신 변수를 사용하기만 하면 됩니다.

기본적으로 원격 명령의 변수는 명령이 실행되는 세션에 정의되는 것으로 간주됩니다. 로컬 세션에 정의된 변수를 사용할 수도 있지만 명령에서는 이러한 변수를 지역 변수로 식별해야 합니다.

원격 변수 사용

Windows PowerShell®에서는 원격 명령에 사용되는 변수가 명령이 실행되는 세션에 정의되어 있다고 가정합니다.

다음 예제에서 $ps 변수는 Get-WinEvent 명령이 실행되는 임시 세션에서 정의되어 있습니다.

        PS C:\>Invoke-Command -ComputerName S1 -ScriptBlock {$ps = "Windows PowerShell"; Get-WinEvent -LogName $ps}

마찬가지로 명령이 영구 세션(PSSession)에서 실행되면 원격 변수가 동일한 PSSession에 정의되어야 합니다.

        PS C:\>$s = New-PSSession -ComputerName S1

        PS C:\>Invoke-Command -ComputerName S1 -ScriptBlock {$ps = "Windows PowerShell"}

        PS C:\>Invoke-Command -Sessions $s -ScriptBlock {Get-WinEvent -LogName $ps}

지역 변수 사용

원격 명령에서 지역 변수를 사용할 수도 있지만 변수는 로컬 세션에 정의되어 있어야 합니다.

Windows PowerShell 3.0부터는 Using 범위 한정자를 사용하여 원격 명령에서 지역 변수를 식별할 수 있습니다.

Using의 구문은 다음과 같습니다.

       The syntax is:
           $Using:<VariableName>       

다음 예제에서 $ps 변수는 로컬 세션에서 만들어지지만 명령이 실행되는 세션에서 사용됩니다. Using 범위 한정자는 $ps를 지역 변수로 식별합니다. 여기에 섹션 본문을 삽입합니다.

        PS C:\>$ps = "Windows PowerShell"
        PS C:\>Invoke-Command -ComputerName S1 -ScriptBlock {Get-WinEvent -LogName $Using:ps}

또한 PSSessions에서 Using 범위 한정자를 사용할 수 있습니다.

        PS C:\>$s = New-PSSession -ComputerName S1

        PS C:\>$ps = "Windows PowerShell"

        PS C:\>Invoke-Command -Sessions $s -ScriptBlock {Get-WinEvent -LogName $Using:ps}

WINDOWS POWERSHELL 2.0에서 지역 변수 사용

원격 명령에 대한 매개 변수를 정의하고 Invoke-Command cmdlet의 ArgumentList 매개 변수를 사용하여 지역 변수를 매개 변수 값으로 지정하면 원격 명령에서 지역 변수를 사용할 수 있습니다.

이 명령 형식은 Windows PowerShell 2.0 이상 버전의 Windows PowerShell에서 사용할 수 있습니다.

  1. -- param 키워드를 사용하여 원격 명령에 대한 매개 변수를 정의합니다. 매개 변수 이름은 지역 변수의 이름과 일치하지 않아도 되는 자리 표시자입니다.

  2. -- 명령에서 param 키워드로 정의된 매개 변수를 사용합니다.

  3. -- Invoke-Command cmdlet의 ArgumentList 매개 변수를 사용하여 지역 변수를 매개 변수 값으로 지정합니다.

예를 들어 다음 명령은 로컬 세션에서 $ps 변수를 정의한 다음 원격 명령에서 사용합니다. 이 명령은 $log를 매개 변수 이름으로 사용하고 지역 변수 $ps를 해당 값으로 사용합니다.

      C:\PS>$ps = "Windows PowerShell"

      C:\PS>Invoke-Command -ComputerName S1 -ScriptBlock {param($log) Get-WinEvent -logname $log} -ArgumentList $ps

키워드

about_Using

참고 항목

about_Remote

about_PSSessions

about_Scopes

Enter-PSSession

Invoke-Command

New-PSSession