PowerShell에서 명령줄 인수를 처리하는 방법
명령줄 인수를 처리하는 "최적의" 방법은 무엇입니까?
"최선의" 방법이 무엇인지에 대해서는 몇 가지 답이 있는 것 같습니다.그 결과, 다음과 같은 간단한 것을 어떻게 다루어야 할지 고민하고 있습니다.
script.ps1 /n name /d domain
그리고.
script.ps1 /d domain /n name.
이것을 보다 잘 처리할 수 있는 플러그인이 있나요?내가 여기서 바퀴를 다시 만들고 있다는 걸 알아.
분명히 내가 이미 가지고 있는 것은 예쁘지도 않고 최고도 아니지만 효과가 있다.그리고 못생겼어.
for ( $i = 0; $i -lt $args.count; $i++ ) {
if ($args[ $i ] -eq "/n"){ $strName=$args[ $i+1 ]}
if ($args[ $i ] -eq "-n"){ $strName=$args[ $i+1 ]}
if ($args[ $i ] -eq "/d"){ $strDomain=$args[ $i+1 ]}
if ($args[ $i ] -eq "-d"){ $strDomain=$args[ $i+1 ]}
}
Write-Host $strName
Write-Host $strDomain
당신은 바퀴를 다시 만들고 있어요.일반 PowerShell 스크립트에는 다음 문자로 시작하는 매개 변수가 있습니다.-
,맘에 들다script.ps1 -server http://devserver
그런 다음 그것들을 처리한다.param
section (스크립트의 첫 번째 줄에서 시작해야 합니다)
파라미터에 기본값을 할당하거나, 사용할 수 없는 경우 콘솔에서 읽거나, 스크립트 실행을 중지할 수도 있습니다.
param (
[string]$server = "http://defaultserver",
[Parameter(Mandatory=$true)][string]$username,
[string]$password = $( Read-Host "Input password, please" )
)
스크립트 내에서 간단하게
write-output $server
모든 파라미터가 스크립트 범위에서 사용 가능한 변수가 되기 때문입니다.
이 예에서는$server
스크립트를 호출하지 않고 디폴트값을 취득하면 스크립트가 정지합니다.-username
parameter 및 terminal input을 요구합니다.-password
생략되어 있습니다.
업데이트: PowerShell 스크립트에 "플래그"(부울 True/False 매개 변수)를 전달할 수도 있습니다.예를 들어, 스크립트는 force를 사용하지 않을 때 스크립트가 보다 신중한 모드로 실행되는 "force"를 받아들일 수 있습니다.
그 키워드는[switch]
파라미터 유형:
param (
[string]$server = "http://defaultserver",
[string]$password = $( Read-Host "Input password, please" ),
[switch]$force = $false
)
스크립트 내에서는 다음과 같이 조작합니다.
if ($force) {
//deletes a file or does something "bad"
}
스크립트를 호출할 때는 switch/flag 파라미터를 다음과 같이 설정합니다.
.\yourscript.ps1 -server "http://otherserver" -force
플래그가 설정되어 있지 않은 것을 명시적으로 기술하는 경우는, 그 특별한 구문이 있습니다.
.\yourscript.ps1 -server "http://otherserver" -force:$false
관련 Microsoft 문서 링크 (PowerShell 5.0의 경우 버전 3.0 및 4.0도 링크에서 이용 가능)
언급URL : https://stackoverflow.com/questions/2157554/how-to-handle-command-line-arguments-in-powershell
'programing' 카테고리의 다른 글
커밋하기 전에 'git add'를 취소하려면 어떻게 해야 합니까? (0) | 2023.04.20 |
---|---|
SQL Server 브라우저를 시작할 수 없습니다. (0) | 2023.04.20 |
SQL Server에 저장된 업데이트 프로시저를 삽입합니다. (0) | 2023.04.15 |
어레이가 IList를 구현하는 이유 (0) | 2023.04.15 |
C# 리스트내림차순 (0) | 2023.04.15 |