PowerShell 선택적 인수가 호출자에 의해 설정되었는지 확인하는 방법
다음과 같은 인수를 사용하는 스크립트가 있습니다.
param (
[parameter(Mandatory=$true)][ValidateRange(1, [int]::MaxValue)]
[Int]$startRevision,
[parameter(Mandatory=$true)][ValidateRange(1, [int]::MaxValue)]
[Int]$endRevision,
[parameter(Mandatory=$false)][ValidateRange(1, [int]::MaxValue)]
[Int]$stepSize = 10,
[parameter(Mandatory=$false)]
[String]$applicationToBuild
)
마지막 인수는 선택사항이기 때문에 인수가 설정되었는지 알고 싶습니다.이것을 할 수 있는 방법이 있습니까?
변수가 설정되어 있지 않으면 변수를 사용하고 싶지 않기 때문에 기본값이 올바르지 않습니다.기본값인 "This IsNotSet"을 사용하여 값이 이 문자열과 동일한지 확인할 수 있지만 더 나은 해결책이 있습니까?
자동 변수는 함수 내부에서 사용할 수 있는 해시 테이블과 유사한 개체로,[1] 속성에는 호출 시 인수가 명시적으로 전달된 모든 매개 변수의 이름이 포함되어 있습니다.
그래서, 당신의 경우에는$PSBoundParameters.ContainsKey('applicationToBuild')인수가 전달되었는지 여부를 알려줍니다.-applicationToBuild(표현은 다음과 같이 평가됨)$True) 여부($False).
참고: 이 접근 방식의 장점은 모호하지 않다는 것이지만, intrbox의 답변처럼 매개 변수 변수 유형의 기본값을 테스트하면 인수를 전달하지 않는 것과 유형의 기본값(이 경우 빈 문자열)을 명시적으로 전달하는 것을 구별할 수 없습니다.
기본값을 통해 암묵적으로 바인딩된 매개 변수는 포함되지 않습니다. GitHub 문제 #3285에서 논의된 것처럼 후자를 포함하면 인수를 다른 함수로 전달할 때 유용합니다.
$applicationToBuild매개 변수의 유형이 다음과 같기 때문에 스크립트에 아무 것도 전달되지 않는 경우 빈 문자열입니다.[String].
파라미터가 "설정되지 않은" 경우,$applicationToBuild.Length될 것이다0.
매개 변수를 사용할지 여부를 결정할 때 사용할 수 있습니다.
언급URL : https://stackoverflow.com/questions/48643250/how-to-check-if-a-powershell-optional-argument-was-set-by-caller
'codememo' 카테고리의 다른 글
| 앵커 태그가 아무것도 참조하지 않도록 만드는 방법은 무엇입니까? (0) | 2023.08.21 |
|---|---|
| mariadb에서 자동 커밋을 해제하는 방법은 무엇입니까? (0) | 2023.08.21 |
| 문자열을 버퍼 노드로 변환 (0) | 2023.08.21 |
| CodeIgniter에서 pconnect 옵션의 장점/단점 (0) | 2023.08.21 |
| Android: 텍스트 편집에 초점을 맞출 때 자동으로 소프트 키보드 표시 (0) | 2023.08.21 |