Ниже у меня есть мой скрипт, который работает при подключении к Azure через PowerShell (чтобы вы могли проверить, есть ли у вас учетная запись Azure), вверху собирает список учетных записей Azure, в которых перечислены и в то же время создавая переменную ($ A, $ B, $ C, $ D и т. д.) для каждой найденной учетной записи. Ниже в разделе ответа моя переменная $ StorageSelection разрешает одну из них, например. $ B, однако, поскольку $ B также является переменной, а не просто запускать $ B, я хочу, чтобы иметь возможность запускать $ StorageSelection, который имеет значение $ B, и я хочу рассматривать значение $ B как переменную, отображающую $ B. Это похоже на преобразование значения $ StorageSelection в переменную и одновременное выполнение ее. Извините, если это звучит сбивает с толку, но в это время я делал свою голову часами.Вложенные переменные PowerShell, обрабатывающие значения как переменные
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""
Где вы определяете '$ StorageSelection'? Я вижу, вы используете его, но я не вижу, где он создан. –
Определяется на третьей последней строке. –
. От третьей до последней строки определяется переменная с именем, полученным из значения '$ {choice}' (т.е. «B»), затем пытается инициализировать ее значением '$ StorageSelection '. Результатом этого будет '$ B = $ null' –