Ich habe ein Problem beim Erstellen einer Funktion mit mehreren Parametern in PowerShell. Ich habe 4 Parameter, und ihr Wert kann und wird entweder über Pipeline oder über direkte Eingabe in einem PowerShell-Fenster übergeben.Mehrere Parameter mit Pipeline oder direkter Eingabe
Ich kann nicht herausfinden, wie Sie sicherstellen, dass die 4 Parameter im Prozessabschnitt verwendet werden können.
Hier ist, was ich habe (der Write-Host
Abschnitt nur zum Testen ist, natürlich):
function Set-NewDevEnv {
[CmdletBinding()]
Param(
[Parameter(Mandatory=$true, ValuefromPipelineByPropertyName=$true)]
[ValidateSet('IIS', 'SQL', 'SOLR', 'Vanilla')]
[string[]]$VMType,
[Parameter(Mandatory=$true, ValuefromPipelineByPropertyName=$true)]
[string[]]$StaticIP,
[Parameter(Mandatory=$true, ValuefromPipelineByPropertyName=$true)]
[string[]]$VMName,
[Parameter(Mandatory=$true, ValuefromPipelineByPropertyName=$true)]
[string[]]$VMDNSName
)
Begin {}
Process {
Write-Host "VMType is $VMType ; StaticIP is $StaticIP ; VMName is $VMName; and VMDNSName is $VMDNSName"
}
Wenn ich diese verwenden, funktioniert es mit Pipeline-Eingang in Ordnung, aber nicht mit Eingangsgleichbefehlszeile, das heißt:
Set-NewDevEnd -VMType "SQL","IIS" -StaticIp "192.168.0.1","192.168.0.2" -VMName "Testing1","Testing2" -VMDNSName "Testing1","Testing2"
ich erhalte
VMType is SQL IIS ; StaticIP is 192.168.0.1 192.168.0.2 ; VMName is Testing1 Testing2 ; and VMDNSName is Testing1 Testing2
ich weiß, dass in der Regel, zu unterstützen sowohl direkte Eingabe und Pipeline-Eingabe, müssen Sie eine foreach
Schleife in der process
Abschnitt hinzufügen, aber wie würde ich über eine foreach
Schleife mit mehreren Parametern gehen?
Dank! Sowohl Ansgar als auch Sie hatten fast die gleiche Antwort hehe Aber Ihre, indem Sie benutzerdefinierte Objekte verwenden, hilft mir sehr viel weiter unten, da ich diese Werte speziell für den Aufbau neuer VMs in VMware verwenden werde. Danke für Ihre Hilfe! :) –
Gern geschehen :) –