下面我的脚本在通过PowerShell连接到Azure时有效(因此您可以测试您是否拥有Azure帐户),顶部是收集列出选项的Azure存储帐户列表,同时创建它找到的每个存储帐户的变量($ A,$ B,$ C,$ D等)。在答案部分下面,我的变量$ StorageSelection解析为其中一个,例如: $ B,但是因为$ B也是一个变量,而不是直接运行$ B我希望能够运行$ StorageSelection,其值为$ B,我想将$ B的值视为显示$的变量B的价值。它就像将$ StorageSelection的值转换为变量并同时运行它一样。对不起,如果这听起来有点令人困惑,但它已经坚持了好几个小时了。
do {
$AzureStorageAccount = Get-AzureStorageAccount
$StorageCount = ($AzureStorageAccount | Measure).Count
write-host ""
write-host "Choose a storage account"
write-host ""
$StorageNumber = 0
do {
$StepAzureStorageAccount = $AzureStorageAccount | select -Skip $StorageNumber | select -First
$GatherStorageAccountName = ($StepAzureStorageAccount).StorageAccountName
$GatherLocation = @(if (($StepAzureStorageAccount).Location -ne $null) {($StepAzureStorageAccount).Location} `
else {($StepAzureStorageAccount).AffinityGroup})
$StorageLetter = $([char](65 + $StorageNumber))
New-Variable -Name "${StorageLetter}" -Value $StepAzureStorageAccount -Force
write-host $StorageLetter" - "$GatherStorageAccountName", "$GatherLocation
$StorageNumber++
}
while ($StorageNumber -lt $StorageCount)
write-host ""
write-host "X - Exit"
write-host ""
write-host -nonewline "Type your choice and press Enter: "
$choice = read-host
write-host ""
$ok = $choice -like '*'
if ( -not $ok) { write-host "Invalid selection" }
} until ( $ok )
New-Variable -Name "${choice}" -Value $StorageSelection -Force
$storage = $StorageSelection
write-host "You entered"($Storage).StorageAccountName""
答案 0 :(得分:0)
无论如何,这是你想要做的吗?
New-Variable -Name StorageSelection -Value (Get-Variable $choice).value -Force
也可以写成:
$StorageSelection = (Get-Variable $choice).value
让我解释一下,你可以确认我的思路:
你有:
$StepAzureStorageAccount
包含一些Azure帐户信息。
然后根据帐户信息构建多个变量$A $B $C
等。
然后,您要求用户选择其中一个变量(格式为A,B,C),并将响应存储在$choice
中。
例如,$Choice
的值为"B"
,您希望$B
包含其他一些数据($StepAzureStorageAccount
)
您最终想要创建一个名为$StorageSelection
的新变量,该变量接收$choice
指向的变量所包含的值。
如果语言是C / C ++,我会说,你有一个指向另一个指针的指针,指向一个值。除非这不是C,指针并不完全存在。
但是Get-Variable
存在。它做了什么,它创建了一个PSVariable
类型的对象,它包含另一个变量的名称和值。
因此,如果$B = "foo"
和$choice = "B"
,则$StorageSelection
将包含"foo"
。