2014-12-12 2 views
0

이하 Azure에 PowerShell을 통해 연결되어있는 동안 작동하는 스크립트가 있습니다 (Azure 계정이 있는지 테스트 할 수 있도록). 상단에 Azure 저장소 계정 목록을 수집합니다. 선택하고 동시에 발견 한 각 저장 계정에 대한 변수 ($ A, $ B, $ C, $ D 등)를 만듭니다. 답변 섹션 아래의 My variable $ StorageSelection은 그 중 하나 (예 : 그러나 $ B는 변수이기 때문에 $ B를 직접 실행하지 않고 $ B의 값을 가진 $ StorageSelection을 실행할 수 있고 $ 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"" 
+0

어디에서'$ StorageSelection'을 정의합니까? 나는 당신이 그것을 사용하는 것을 본다, 그러나 나는 그것이 창조 된 곳을 보지 못했다. –

+0

세번째 마지막 줄에 정의되어있다. –

+0

세번째 줄부터 마지막 ​​줄까지는'$ {choice}'의 값에서 파생 된 이름을 가진 변수를 정의한 다음 (''B ''),'$ StorageSelection '. 그 결과는'$ B = $ null'입니다. –

답변

0

언제든지이 작업을 수행 하시겠습니까?

$StorageSelection = (Get-Variable $choice).value 

날 그래서 당신은 생각의 내 라인 확인할 수 있습니다 설명해 보자 :도 쓸 수 있습니다

New-Variable -Name StorageSelection -Value (Get-Variable $choice).value -Force 

을 당신은이 : 약간의 푸른 계정 정보를 포함

$StepAzureStorageAccount.

그런 다음 계정 정보에 따라 $A $B $C 등 여러 변수를 만듭니다.

그런 다음 사용자에게 이러한 변수 중 하나 (A, B, C 형식) 중 하나를 선택하고 $choice에 응답을 저장하도록 요청합니다.

그래서 예를 들어, $Choice의 값이 "B"이며 다른 데이터 당신은 마침내 새로운 변수를 만들려면 ($StepAzureStorageAccount)

에 포함 $B을 원하는 어떤 변수의 값을 수신 $StorageSelection라고 $choice에 포함되어 있습니다.

언어가 C/C++ 인 경우 다른 포인터 (값을 가리키는 포인터)가 있습니다. C와 포인터가 정확히 존재하지 않습니다.

그러나 Get-Variable이 존재합니다. 그리고 그것이하는 일은 다른 변수의 이름과 값을 포함하는 PSVariable 타입의 객체를 생성합니다.

따라서 $B = "foo"$choice = "B" 인 경우 $StorageSelection"foo"을 포함합니다.

+0

안녕하세요. 오늘 토요일에 아이들과 함께 바쁘신 걸 환영합니다. 저녁이되어서 처음으로 이걸보아야 만했습니다.그러나 당신의 예제에서'$ B = "foo"'와'$ choice = "B"'이면'$ StorageSelection'은이 예제에서''foo "'를 포함 할 것입니다. $ StorageSelection = "foo"'$ storageSelection'은''$ B = "foo"와 동일합니다. "$ StorageSelection ="foo " '(첫 번째 인스턴스에서) –

+0

나쁜, 그것은 작동합니다, 당신의 도움을 주셔서 감사합니다 :) –

관련 문제