PowerShell에서 $Using 가변 범위
PowerShell에서 원격 명령으로 작업할 때 원격 세션에서 로컬 변수를 사용하고 싶을 때가 있습니다. 그러나 원격 명령에서 로컬 변수를 사용하면 원격 세션에서 변수가 생성되지 않기 때문에 오류를 반환합니다.
기본적으로 PowerShell은 원격 명령의 변수가 명령이 실행되는 원격 세션에서 정의될 것으로 예상합니다. Using
은 원격 명령에서 로컬 변수를 사용할 수 있도록 하는 특수 범위 수정자입니다.
Using
범위 수정자는 로컬 세션에 정의된 변수를 원격 명령의 로컬 변수로 식별합니다. PowerShell 3.0에서 도입되었습니다.
이 튜토리얼은 PowerShell에서 Using
을 사용하여 원격 명령에서 로컬 변수를 사용하는 방법을 알려줍니다.
PowerShell에서 사용
범위 수정자 사용
Using
범위 수정자의 구문은 다음과 같습니다.
$Using:VariableName
Using
범위 수정자는 ComputerName
, HostName
, SSHConnection
또는 Session
매개변수를 사용하여 Invoke-Command
로 시작하여 원격으로 실행되는 명령에서 지원됩니다.
다음 스크립트는 $test
변수가 로컬 컴퓨터에서 정의되고 원격 세션에서 사용됨을 보여줍니다.
$test = "C:\New\complex"
Invoke-Command -ComputerName remotePC -ScriptBlock {
Get-ChildItem $Using:test
}
첫 번째 명령은 로컬 컴퓨터의 $test
변수에 C:\New\complex
디렉토리의 경로를 저장합니다. 두 번째 명령은 원격 컴퓨터에서 로컬 변수 $test
를 사용하여 Get-ChildItem
명령을 실행합니다.
결과적으로 원격 컴퓨터의 C:\New\complex
디렉터리에 있는 항목을 인쇄합니다.
출력:
Directory: C:\New\complex
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 20-12-2021 19:31 112125 architecture of aqps.png
-a---- 20-12-2021 21:32 33148 formula.png
-a---- 20-12-2021 21:30 55621 modules.png
-a---- 20-12-2021 16:35 190485 output paper.png
PSSession
에서 Using
범위 수정자를 사용할 수도 있습니다.
다음 예에서는 두 개의 변수 $a
및 $b
가 로컬 세션에서 생성되고 원격 세션에서 사용됩니다. $result
변수는 $a
및 $b
에 값의 곱셈을 저장하는 원격 세션에 정의됩니다.
$ps = New-PSSession -ComputerName remotePC
$a=5
$b=6
Invoke-Command -Session $ps -ScriptBlock {
$result = $Using:a*$Using:b
Write-Host The result is $result
}
출력:
The result is 30
이 튜토리얼이 원격 명령의 로컬 변수에 Using
범위 수정자를 사용하는 방법을 이해하는 데 도움이 되었기를 바랍니다. 자세한 내용은 about_Remote_Variables
를 참조하세요.