-
[PowerShell] 자동변수(Automatic Variable) - 11. $PSBoundParameters, $PSCmdlet, $PSCommandPathShell & CMD/PowerShell 2023. 11. 25. 12:35반응형
$PSBoundParameters
스크립트 또는 함수에 전달된 파라메터를 의미한다.
테스트를 위해 $PROFILE 프로필에 아래와 같은 함수를 추가하자
function Test1 { param ( $a, $b ) Write-Host 'Test1' $PSBoundParameters } function Test2 { param ( $a, $b ) Write-Host 'Test2' Test1 @PSBoundParameters }
$PROFILE을 다뤄본 적 없다면, 아래 글을 참고하여 생성할 수 있다.
[PowerShell 기초] 6. Powershell 프로필 설정 :: 또치의 삽질 보관함 (tistory.com)
파일 추가 후, 새로운 파워셸 창에서 Test2 함수를 사용하면 이미지와 같이 입력한 파라메터에 대한 Key-Value 형식의 $PSBoundParameters 값을 확인할 수 있다.
Key-Value 방식이기 때문에 전달하는 파라메터의 명칭이 다를 경우 매칭되지 않는다. 작성한 예제에서 Test1의 함수 파라메터 b의 이름을 c로 바꿔보겠다.
function Test1 { param ( $a, $c #$b -> $c로 변경 ) Write-Host 'Test1' $PSBoundParameters }
이후 테스트를 하면 a에 대한 값만 $PSBoundParameters 에 표현됨을 확인할 수 있다.
$PSCmdlet
실행중인 고급함수 정보를 확인한다. 간단한 확인을위해 아래와 같은 Test 함수를 생성하여 $PROFILE에 추가한다.
function Send-Greeting { [CmdletBinding()] param ( [String] $Name ) Write-Host "Hello, $Name" $PSCmdlet }
일반적인 함수와 달리, CmdletBinding 가 param 영역 바로 위에 붙은 것을 확인할 수 있는데, 해당 속성(Attribute)이 고급함수를 선언하기위한 속성이라보면 된다.
관련하여 보다 자세한 정보를 찾고 싶다면 고급 함수 정보 - PowerShell | Microsoft Learn 에서 확인할 수 있다. 여기선 $PSCmdlet 이 어떤 값을 보여주는지만 다루겠다.
함수 추가 후 새로운 파워셸 창을 열어 메소드를 실행하면, 아래 이미지와 같이 $PSCmdlet 정보가 표시된다.
$PSCommandPath
실행 중인 스크립트 전체 경로 및 파일 이름을 표기한다. $PSCommandPath 값 선언한 test.ps1 파일 생성 후, 파워셸에서 test.ps1을 실행하면 test.ps1의 파일경로가 출력된다.
출처
반응형'Shell & CMD > PowerShell' 카테고리의 다른 글