Ich habe ein Skript, an das ich Servernamen in $ args übergebe.
Auf diese Weise kann ich mit diesen Servern Folgendes tun foreach
:
.\script.ps1 host1 host2 host3
foreach ($i in $args)
{
Do-Stuff $i
}
Ich möchte einen benannten optionalen Parameter namens vlan hinzufügen. Ich habe es versucht:
Param(
[string]$vlan
)
foreach ($i in $args)
{
Write-Host $i
}
Write-Host $vlan
Dies funktioniert, wenn Sie einen -vlan
Parameter übergeben. Wenn Sie dies nicht tun, weist das Skript automatisch den letzten Servernamen zu $vlan
.
Wie können Sie also einzelne oder mehrere Parameter sowie einen optionalen benannten Parameter an ein PowerShell-Skript übergeben?
Im Idealfall sind hier gültige Beispiele:
.\script.ps1 host1
.\script.ps1 host1 host2 host3
.\script.ps1 host1 host2 -vlan office
quelle
Parameter werden vor Argumenten eingegeben. Stattdessen sollten Sie einen Parameter hinzufügen, der ein Array akzeptiert, und es zum ersten Positionsparameter machen. Ex:
Dann nenne es wie:
Beachten Sie das Komma zwischen den Werten. Dies sammelt sie in einem Array
quelle
Ein Weg, dies zu tun, wäre folgender:
Dies würde die Eingabe mehrerer Hosts mit Leerzeichen ermöglichen.
quelle
Ich rufe ein geplantes Skript auf, das auf folgende Weise eine Verbindung zu einer Liste von Servern herstellen muss:
Dann im Skript:
Der Split-Operator gibt ein Array von Zeichenfolgen zurück
quelle