PowerShell에서 $Using 가변 범위

Rohan Timalsina 2024년2월16일
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를 참조하세요.

Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website