Mam 2x tablicy $ Arrayrg:
testRG1
testRG2
testRG3
I odpowiednie $ Arrayvm:
testVM1
testVM2
testVM3
Jak uruchomić ten kod poniżej, aby zatrzymać VMS, więc wartości zostaną pobrane z tablic, coś w rodzaju:
Stop-AzureRmVM -ResourceGroupName "testRG1" -Name "testVM1"
...
Próbuję logiki Foreach, ale nie może dowiedzieć się, jak chwycić obie wartości, jak poniżej zajmuje tylko zasobów:
foreach ($VM in $arrayRG)
{
Stop-AzureRmVM -ResourceGroupName $VM -Name "how to get name here?"
}
------------ Inne opcja próbowała ----
Używanie stołów Hash, ale nadal nie ma szczęścia. Udało się, aby dostać tak jak hash:
Name Value
testRG1 TestVM1
testRG2 TestVM2
testRG3 TestVM3
Kiedy próbowałem foreach na stole Hash:
foreach ($VM in $hash)
{
Stop-AzureRmVM -ResourceGroupName $VM.Keys -Name $VM.Values
}
Również nie powiedzie się powyżej. Jak można to rozwiązać?
2 odpowiedzi
Jeśli istnieje związek jeden do jednego między dwoma tablicami, można użyć pętli for
i uzyskać dostęp do tego samego indeksu w każdej tablicy:
for ($i = 0; $i -lt $arrayRG.Count; $i++) {
Stop-AzureRmVM -ResourceGroupName $arrayRG[$i] -Name $arrayVM[$i]
}
Możesz zrobić coś podobnego z podejściem stołowym Hash. Po prostu trzeba najpierw wyliczyć kluczowe pary.
$hash.GetEnumerator() | Foreach {
Stop-AzureRmVM -ResourceGroupName $_.Key -Name $_.Value
}
Możesz użyć hashtable, patrząc na klucze, a następnie używając tych, aby uzyskać wartości
foreach($key in $hashtable.Keys) {
$key # Prints the name
$hashtable[$key] # Prints the value
Stop-AzureRmVM -ResourceGroupName $key -Name $hashtable[$key]
}
Podobne pytania
Nowe pytania
powershell
PowerShell to wieloplatformowe narzędzie do obsługi skryptów i wiersza poleceń firmy Microsoft. Tego tagu należy używać tylko w przypadku pytań dotyczących pisania i wykonywania skryptów programu PowerShell TYLKO. Pytania programistyczne specyficzne dla wieloplatformowej wersji programu PowerShell Core (Windows, macOS i Linux) należy oznaczyć tagiem [powershell-core]. Pytania dotyczące administrowania systemem należy zadawać w witrynie Super User lub Server Fault.