[Azure]使用Powershell输出Azure订阅下所有虚拟机的ACL信息
2017-01-08 22:05
731 查看
这个脚本可以用来输出订阅下所有虚拟机的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;
执行结果截图:
脚本如下:
# 设置订阅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;
执行结果截图:
相关文章推荐
- [Azure]使用Powershell导出所有订阅下的ARM虚拟机的信息
- [Azure]使用Azure Powershell输出ARM模式下某个账号中所有订阅下的虚拟网络拓扑
- [Azure]使用Azure Powershell输出ASM模式下某个账号中所有订阅下的虚拟网络拓扑
- [Azure]使用Powershell输出某台ASM虚拟机的NSG和ACL
- [Azure]使用Powershell输出某台ARM虚拟机的NSG
- [Azure]使用Powershell批量添加虚拟机ACL
- Azure Powershell获取指定订阅下的虚拟机信息(ARM)
- Azure PowerShell (10) 使用PowerShell导出订阅下所有的Azure VM和Cloud Service的高可用情况
- Azure PowerShell (9) 使用PowerShell导出订阅下所有的Azure VM的Public IP和Private IP
- [Azure]使用Powershell获取Azure ARM模式订阅下的一些常用信息
- [Azure] 使用Azure Powershell脚本查看账号下所有订阅中的云服务公网IP地址绑定情况
- Azure Powershell获取指定订阅下的虚拟机信息(ASM)
- [Azure]使用Powershell获取ARM模式下可用的虚拟机平台映像信息
- 使用Azure Powershell创建数据磁盘附加到DS系列虚拟机
- [Azure]使用Azure Powershell查看ARM模式下Azure存储中的vhd文件对应的虚拟机
- [Azure]使用Powershell为ASM虚拟机创建快照
- [Azure]使用Powershell将ARM虚拟机(托管磁盘)加入可用性集
- [Azure]使用Powershell调整ARM虚拟机的系统磁盘和数据磁盘大小
- [Azure]使用Azure Powershell查看ASM模式下Azure存储中的vhd文件对应的虚拟机