2
我想從編程生成的列表中提示選項。powershell使用數組作爲參數
背景: 我有2個包含不同環境的AWS賬戶。 該腳本會自動檢測您所在的帳戶,然後它會提示您要加入哪個環境。
我想這一點:
$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)
可以使用 $options = [System.Management.Automation.Host.ChoiceDescription[]]("yes","no")
創建選項的彈出,但在我的情況下,它彈出包含我所有的環境中,用逗號分隔的一個選項。我希望它爲每個(相關)環境彈出一個選項。
如何從In-PowerShell世界將外部環境的字符串列表彈出到外部PowerShell世界?
這真棒。那麼你使用不同類型的變量的主要變化是什麼?我可以看到它的作品,但看不到如何。 –
我將條件更改爲$ _。awsAccount -like「*」+ $ awsAccount +「*」讓它起作用。 –
@RichardMoore很高興在這裏工作。主要的改變是'$ envs =([string](..''),因爲我不確定這是否正確地返回'$ options = ...'所需的字符串數組,你可以用'Write -Host $ env'_after_此行並查看它打印的內容。使用相同的變量名稱通常很好;爲了清晰起見,我使用了不同的名稱。 – gms0ulman