여러 구독에서 모든 VNet 및 서브넷 나열
스크립트
이 스크립트가 어떻게 작동하는지 배우고 싶다면 코드 다음에 블로그 게시물을 계속하겠습니다. 스크립트를 실행하려는 사람들을 위해 여기로 이동합니다.
Get-AzSubscription | Foreach-Object {
$sub = Set-AzContext -SubscriptionId $_.SubscriptionId
$vnets = Get-AzVirtualNetwork
foreach ($vnet in $vnets) {
[PSCustomObject]@{
Subscription = $sub.Subscription.Name
Name = $vnet.Name
Vnet = $vnet.AddressSpace.AddressPrefixes -join ', '
Subnets = $vnet.Subnets.AddressPrefix -join ', '
}
}
} | Export-Csv -Delimiter ";" -Path "AzureVnet.csv"
이렇게 하면 결과가 CSV로 내보내지지만 원하지 않는 경우 마지막 파이프와 cmdlet Export-Csv를 제거할 수 있습니다.
Az 모듈이 설치되어 있어야 합니다. 또한 최소한 모든 구독 및 네트워크 리소스를 읽을 수 있는 계정으로 Azure에 연결해야 합니다.
스크립트 작동 방식
모든 구독을 사용할 수 있게 하고 for 각 루프를 통해 하나씩 실행하는 것으로 시작합니다. 따라서 모든 구독에 대해 활성 컨텍스트를 해당 구독으로 설정하고 해당 구독의 모든 가상 네트워크로 변수
$vnets
를 채웁니다.$vnets
변수에서 VNet당 하나의 새 PSCustomObject를 만드는 각 루프에 대해 또 다른 작업을 실행합니다. 이것이 우리가 정보를 표현하는 방법이며 처음 몇 가지 값이 의미가 있습니다. 구독을 현재 구독의 이름으로 설정하고 Vnet의 이름을 이름 필드로 설정합니다.VNet 주소 공간 및 서브넷의 경우 $vnet의 값을 가리키기만 하면 됩니다. 터미널에서 결과를 원할 경우 완벽하게 작동합니다. 내가 원하는 것은 이것을 CSV로 내보내서 목록이 필요한 사람과 공유할 수 있도록 하는 것입니다. 이 값을 내보내려고 하고 둘 이상이면 IP 범위가 아니라 텍스트
System.Collections.Generic.List
를 받게 됩니다.이 문제를 해결하려면 원하는 값을 참조하고 join operator을 사용하여 모든 값을 쉼표로 구분하여 결합합니다. 또한 읽기 쉽게 하기 위해 쉼표 뒤에 공백을 추가했습니다. VNet 주소 공간과 서브넷은 여러 값이 될 수 있으므로 두 값 모두에 조인 연산자를 사용해야 했습니다.
Reference
이 문제에 관하여(여러 구독에서 모든 VNet 및 서브넷 나열), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/roberthstrand/list-all-vnet-and-subnets-across-multiple-subscriptions-4028텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)