Ich möchte zur Eingabe von Optionen aus einer programmgesteuerten Liste.Powershell verwenden Array als Parameter
Hintergrund: Ich habe 2 AWS-Konten mit verschiedenen Umgebungen. Das Skript erkennt automatisch, in welchem Konto Sie sich befinden, und es sollte dann gefragt werden, an welcher Umgebung Sie teilnehmen möchten.
Ich versuche dies:
$envs = "
1,Dev
1,Test
1,Demo
2,Staging
2,Production
" | ConvertFrom-Csv -Delimiter "," -header "awsAccount","Environment"
$awsAccount = Determine-awsAccount
$envs = ([string]($allServers.Environment | Where-Object -property awsAccount -eq $awsAccount | Sort-Object | Get-unique)).replace(" ",",")
$title = "Deploy into which environment"
$message = "Please select which environment you want to deploy into"
$options = [System.Management.Automation.Host.ChoiceDescription[]]($envs)
$result = $host.ui.PromptForChoice($title, $message, $options, 0)
Sie können ein Pop-up-Optionen $options = [System.Management.Automation.Host.ChoiceDescription[]]("yes","no")
Aber in meinem Fall mit schaffen es Aufspringen eine Option, um alle meine Umgebungen enthalten, die durch Kommas getrennt . Ich möchte, dass es für jede (relevante) Umgebung eine Option gibt.
Wie kann ich die String-Liste der Umgebungen wieder aus der PowerShell-Welt in die PowerShell-Welt nach außen verschieben?
Das ist genial. Also ist die Hauptänderung, dass Sie eine andere Art von Variablen verwendet haben? Ich kann sehen, dass es funktioniert, aber ich kann nicht sehen wie. –
Ich habe die Bedingung in $ _ geändert. AwsAccount - wie "*" + $ awsAccount + "*", damit es funktioniert. –
@RichardMoore Froh, hier funktioniert es. Die wichtigste Änderung ist die Zeile '$ envs = ([string] (..' da ich nicht davon überzeugt bin, dass das von $ $ options = ... benötigte String-Array korrekt zurückgegeben wird.) Sie können dies mit 'Write 'testen -Host $ env_ _nach dieser Zeile und sehen, was es druckt.Verwenden Sie den gleichen Variablennamen ist in Ordnung, ich verwende andere für die Klarheit. – gms0ulman