[Azure]使用Powershell輸出Azure訂閱下所有虛擬機器的ACL資訊
阿新 • • 發佈:2019-01-26
這個指令碼可以用來輸出訂閱下所有虛擬機器的ACL資訊(ASM模式),執行指令碼前需要匯入訂閱或者使用Add-AzureAccount -Environment AzureChinaCloud來登陸。
指令碼如下:
# 設定訂閱ID Select-AzureSubscription -SubscriptionName "XXXXXXXX"; # 獲取當前預設訂閱下所有的虛擬機器 $vms = Get-AzureVM; # 獲取虛擬機器數量 $vmCount = $vms.Count; $aclRules = New-Object System.Collections.ArrayList; # 遍歷所有的虛擬機器 for($i=0; $i -lt $vmCount; $i++) { # 獲取虛擬機器物件 $vm = $vms[$i]; # 獲取這個虛擬機器的所有端點 $endpoints = Get-AzureEndpoint -VM $vm; # 遍歷所有端點 foreach($endpoint in $endpoints) { # 獲取端點的ACL資訊 $rules = $endpoint.Acl.Rules; # 判斷如果端點沒有任何ACL資訊,就不輸出 if ($rules.Count -gt 0) { foreach($rule in $rules) { $aclRules.Add(@{CloudService=$vm.ServiceName; VMName=$vm.Name; EndpointName=$endpoint.Name; PublicPort=$endpoint.Port; LocalPort=$endpoint.LocalPort; Protocol=$endpoint.Protocol; VIP=$endpoint.Vip; RuleName=$rule.Description; RemoteSubnet=$rule.RemoteSubnet; Access=$rule.Action; Priority=$rule.Order;}); } } } } $aclRules | Select @{Name="CloudService"; Expression={$_["CloudService"]}}, @{Name="VMName";Expression={$_["VMName"]}}, @{Name="EndpointName"; Expression={$_["EndpointName"]}}, @{Name="PublicPort"; Expression={$_["PublicPort"]}}, @{Name="LocalPort"; Expression={$_["LocalPort"]}}, @{Name="Protocol"; Expression={$_["Protocol"]}}, @{Name="VIP"; Expression={$_["VIP"]}}, @{Name="RuleName"; Expression={$_["RuleName"]}}, @{Name="RemoteSubnet"; Expression={$_["RemoteSubnet"]}}, @{Name="Access"; Expression={$_["Access"]}}, @{Name="Priority"; Expression={$_["Priority"]}} | Out-GridView;
執行結果截圖: