단일 PowerShell 스크립트 매개 변수에 여러 값 전달
$args로 서버 이름을 전달하는 스크립트가 있습니다.
이 방법으로 이 (이들)서버에 대한 작업을 수행할 수 있습니다.foreach:
.\script.ps1 host1 host2 host3
foreach ($i in $args)
{
Do-Stuff $i
}
vlan이라는 이름의 옵션 파라미터를 추가하고 싶습니다.시도했습니다.
Param(
[string]$vlan
)
foreach ($i in $args)
{
Write-Host $i
}
Write-Host $vlan
합격하면 된다.-vlan파라미터가 할당되지 않은 경우 스크립트는 마지막 서버 이름을 자동으로 할당합니다.$vlan.
그러면 PowerShell 스크립트에 단일 또는 여러 매개 변수와 옵션 이름 지정 매개 변수를 전달하려면 어떻게 해야 할까요?
이상적으로는 다음과 같은 유효한 예를 들 수 있습니다.
.\script.ps1 host1
.\script.ps1 host1 host2 host3
.\script.ps1 host1 host2 -vlan office
가장 쉬운 방법은 다음 두 가지 파라미터를 사용하는 것입니다.하나는 호스트용(어레이일 수 있음)이고 다른 하나는 VLAN용입니다.
param([String[]] $Hosts, [String] $VLAN)
대신
foreach ($i in $args)
사용할 수 있습니다.
foreach ($hostName in $Hosts)
호스트가 1개뿐일 경우 foreach 루프는 1회만 반복됩니다.여러 호스트를 스크립트에 전달하려면 해당 호스트를 어레이로 전달합니다.
myScript.ps1 -Hosts host1,host2,host3 -VLAN 2
...혹은 비슷한 것.
한 가지 방법은 다음과 같습니다.
param(
[Parameter(Position=0)][String]$Vlan,
[Parameter(ValueFromRemainingArguments=$true)][String[]]$Hosts
) ...
이렇게 하면 여러 호스트를 공백으로 입력할 수 있습니다.
파라미터는 인수 앞에 입력을 받습니다.대신 배열을 받아들이는 매개 변수를 추가하여 첫 번째 위치 매개 변수로 만들어야 합니다.예:
param(
[Parameter(Position = 0)]
[string[]]$Hosts,
[string]$VLAN
)
foreach ($i in $Hosts)
{
Do-Stuff $i
}
그럼 이렇게 불러주세요.
.\script.ps1 host1, host2, host3 -VLAN 2
값 사이의 쉼표에 주의해 주세요.배열로 수집합니다.
yml 파일에서 이 작업을 수행하는 동안 문제가 발생했습니다. 그리고 다음 링크를 찾았고 스크립트 앞에 "-Command"를 추가하여 해결했습니다.
https://michlstechblog.info/blog/powershell-passing-an-array-to-a-script-at-command-line/
스케줄된 스크립트를 호출합니다.이 스크립트는 다음과 같이 서버 목록에 접속해야 합니다.
Powershell.exe -File "YourScriptPath" "Par1,Par2,Par3"
다음으로 스크립트 내:
param($list_of_servers)
...
Connect-Viserver $list_of_servers.split(",")
분할 연산자가 문자열 배열을 반환합니다.
언급URL : https://stackoverflow.com/questions/15120597/passing-multiple-values-to-a-single-powershell-script-parameter
'programing' 카테고리의 다른 글
| WPF에 form.onload가 존재합니까? (0) | 2023.04.18 |
|---|---|
| 모든 브랜치를 끌어당기고 푸시하도록 git 설정 (0) | 2023.04.18 |
| 다양한 커밋을 선택하여 다른 브랜치로 결합하려면 어떻게 해야 합니까? (0) | 2023.04.18 |
| 체크박스를 크게 하는 방법 (0) | 2023.04.18 |
| 0 대 1 정규화를 실행하는 방법 Excel (0) | 2023.04.18 |