这个脚本用于输出ARM模式下虚拟机的NSG,对于多网卡虚拟机也同样适用。可以输出所有网络接口的NSG以及虚拟机所在子网的NSG。

脚本如下:

param(#The name of the subscription to take all the operations within. [Parameter(Mandatory = $true)] [string]$SubscriptionName, # Resource Group Name.[Parameter(Mandatory = $true)][string]$ResourceGroupName,# Virtual Machine Name.[Parameter(Mandatory = $true)][string]$VMName
)$cred = Get-Credential;
Login-AzureRmAccount -EnvironmentName AzureChinaCloud -Credential $cred;Select-AzureRmSubscription -SubscriptionName $SubscriptionName;Function GetResourceNameFromResourceId($resourceId)
{return $resourceId.Substring($resourceId.LastIndexOf('/')+1);
}Function GetResourcePropertyFromResourceId($resourceId, $propertyName)
{$propertyName = $propertyName + "/";$rgName = $resourceId.Substring($resourceId.IndexOf($propertyName)+$propertyName.Length);return $rgName.Substring(0, $rgName.IndexOf("/"));
}Function PrintVirtualMachineNetworkSecurityRules($vm)
{#loop all the network interfaces$customRules = New-Object System.Collections.ArrayList;#$defaultRules = New-Object System.Collections.ArrayList;$duplicateRules = New-Object System.Collections.ArrayList;foreach($nic in $vm.NetworkProfile.NetworkInterfaces){# get network interface object$nicId = $nic.Id;$nicName = GetResourceNameFromResourceId $nicId;$nicRgName = GetResourcePropertyFromResourceId $nicId "resourceGroups";$interface = Get-AzureRmNetworkInterface -Name $nicName -ResourceGroupName $nicRgName;# get nsg for this network interface$nicNsgId = $interface.NetworkSecurityGroup.Id;if($nicNsgId -ne $NULL){if(!$duplicateRules.Contains($nicNsgId)){$duplicateRules.Add($nicNsgId);$nicNsgName = GetResourceNameFromResourceId $nicNsgId;$nicNsgRgName = GetResourcePropertyFromResourceId $nicNsgId "resourceGroups";$nicNsg = Get-AzureRmNetworkSecurityGroup -Name $nicNsgName -ResourceGroupName $nicNsgRgName;$nicNsgCustomRules = $nicNsg.SecurityRules;foreach($nicNsgCustomRule in $nicNsgCustomRules){$customRules.Add(@{RuleName=$nicNsgCustomRule.Name; Protocol=$nicNsgCustomRule.Protocol; Source=$nicNsgCustomRule.SourceAddressPrefix; SourcePort=$nicNsgCustomRule.SourcePortRange; Dest=$nicNsgCustomRule.DestinationAddressPrefix; DestPortRange=$nicNsgCustomRule.DestinationPortRange; Access=$nicNsgCustomRule.Access; Priority=$nicNsgCustomRule.Priority; Direction=$nicNsgCustomRule.Direction; Catagory="Interface NSG";});}#$nicNsgDefaultRules = $nicNsg.DefaultSecurityRules;#foreach($nicNsgDefaultRule in $nicNsgDefaultRules)#{#    $customRules.Add(@{RuleName=$nicNsgDefaultRule.Name; Protocol=$nicNsgDefaultRule.Protocol; Source=$nicNsgDefaultRule.SourceAddressPrefix; SourcePort=$nicNsgDefaultRule.SourcePortRange; Dest=$nicNsgDefaultRule.DestinationAddressPrefix; DestPortRange=$nicNsgDefaultRule.DestinationPortRange; Access=$nicNsgDefaultRule.Access; Priority=$nicNsgDefaultRule.Priority; Direction=$nicNsgDefaultRule.Direction;});#}}}# get subnet object$subnetId = $interface.IpConfigurations.Subnet.Id;$subnetName = GetResourceNameFromResourceId $subnetId;$subnetRgName = GetResourcePropertyFromResourceId $subnetId "resourceGroups";$virtualNetworkName = GetResourcePropertyFromResourceId $subnetId "virtualNetworks";$vnet = Get-AzureRmVirtualNetwork -Name $virtualNetworkName -ResourceGroupName $subnetRgName;$subnet = Get-AzureRmVirtualNetworkSubnetConfig -Name $subnetName -VirtualNetwork $vnet# get nsg for the subnet$subnetNsgId = $subnet.NetworkSecurityGroup.Id;if($subnetNsgId -ne $NULL){if(!$duplicateRules.Contains($subnetNsgId)){$duplicateRules.Add($subnetNsgId);$subnetNsgName = GetResourceNameFromResourceId $subnetNsgId;$subnetNsgRgName = GetResourcePropertyFromResourceId $subnetNsgId "resourceGroups";$subnetNsg = Get-AzureRmNetworkSecurityGroup -Name $subnetNsgName -ResourceGroupName $subnetNsgRgName;$subnetNsgCustomRules = $subnetNsg.SecurityRules;foreach($subnetNsgCustomRule in $subnetNsgCustomRules){$customRules.Add(@{RuleName=$subnetNsgCustomRule.Name; Protocol=$subnetNsgCustomRule.Protocol; Source=$subnetNsgCustomRule.SourceAddressPrefix; SourcePort=$subnetNsgCustomRule.SourcePortRange; Dest=$subnetNsgCustomRule.DestinationAddressPrefix; DestPortRange=$subnetNsgCustomRule.DestinationPortRange; Access=$subnetNsgCustomRule.Access; Priority=$subnetNsgCustomRule.Priority; Direction=$subnetNsgCustomRule.Direction; Catagory="Subnet NSG";});}#$subnetNsgDefaultRules = $subnetNsg.DefaultSecurityRules;#foreach($subnetNsgDefaultRule in $subnetNsgDefaultRules)#{#    $customRules.Add(@{RuleName=$subnetNsgDefaultRule.Name; Protocol=$subnetNsgDefaultRule.Protocol; Source=$subnetNsgDefaultRule.SourceAddressPrefix; SourcePort=$subnetNsgDefaultRule.SourcePortRange; Dest=$subnetNsgDefaultRule.DestinationAddressPrefix; DestPortRange=$subnetNsgDefaultRule.DestinationPortRange; Access=$subnetNsgDefaultRule.Access; Priority=$subnetNsgDefaultRule.Priority; Direction=$subnetNsgDefaultRule.Direction;});#}}}}$customRules | select @{Name="Name"; Expression={$_["RuleName"]}}, @{Name="Protocol";Expression={$_["Protocol"]}}, @{Name="Source"; Expression={$_["Source"]}}, @{Name="SourcePort"; Expression={$_["SourcePort"]}}, @{Name="Dest"; Expression={$_["Dest"]}}, @{Name="DestPortRange"; Expression={$_["DestPortRange"]}}, @{Name="Access"; Expression={$_["Access"]}}, @{Name="Priority"; Expression={$_["Priority"]}}, @{Name="Direction"; Expression={$_["Direction"]}}, @{Name="Catagory"; Expression={$_["Catagory"]}} | Out-GridView;
}$vm = Get-AzureRmVM -ResourceGroupName $ResourceGroupName -Name $VMName;
PrintVirtualMachineNetworkSecurityRules $vm;

调用方法:

[ARM]show_virtual_machine_nsgs.ps1 -SubscriptionName <Subscription Name> -ResourceGroupName <ResourceGroupName> -VMName <VM Name>

输出结果:



[Azure]使用Powershell输出某台ARM虚拟机的NSG相关推荐

  1. [Azure]使用Powershell输出某台ASM虚拟机的NSG和ACL

     这个脚本用于输出ASM模式下虚拟机的NSG和ACL,对于多网卡虚拟机也同样适用.可以输出所有网络接口的NSG以及虚拟机所在子网的NSG. 脚本如下: param(#The name of the ...

  2. 微软Azure PowerShell使用指南(2) - 控制虚拟机

    如上篇,选择相应的订阅信息后,我们就可以开始使用我们的云资源.这篇我们介绍如何创建虚拟机并且通过PowerShell就可以控制虚拟机. 创建虚拟机 微软提供了非常多的操作系统镜像,从Windows 2 ...

  3. 两台ubuntu虚拟机环境下hadoop安装配置

    http://blog.itpub.net/26978437/viewspace-730136/ 按照上几篇的内容,安装好两台ubuntu虚拟机之后,首先确定好哪台机子做namenode,哪台做dat ...

  4. 访问局域网另外一台电脑虚拟机中CentOS7

    访问局域网另外一台电脑虚拟机中CentOS7 参考: https://blog.csdn.net/yangzaiqiu1986814/article/details/50788263

  5. 如何构建虚拟机Hadoop集群,搭建3台ubuntu虚拟机集群

    如何构建虚拟机Hadoop集群,搭建3台ubuntu虚拟机集群 克隆集群机器 通过虚拟机搭建Hadoop集群,发现使用的VMware workstation 15 player版本没有克隆功能,于是找 ...

  6. MAC ARM 虚拟机 安装visual studio 2019

    MAC ARM 安装visual studio 2019 1.安装Parallels Desktop for Apple M1 Silicon ARM 虚拟机 2.安装win10(需要安装ARM版本) ...

  7. 安装一台RHEL6虚拟机

    安装一台RHEL6虚拟机  问题 新建一台RHEL虚拟机,相关配置及要求如下所述. 硬盘300GB.内存2GB 分区规划: /boot 200MB./ 100GB.SWAP 4096MB./data ...

  8. qemu arm虚拟机联网

    1.介绍 2. 互联环境搭建 2.1 准备宿主机环境 2.2 准备qemu环境 3. qemu虚拟机挂载samba文件系统 1.介绍 通过qemu模拟arm虚拟机,但由于arm虚拟机只有ramfs,有 ...

  9. 配置ARM虚拟机_使用qemu建立mini2440的模拟仿真环境

    编者按: 参考文章&课程: leao :用qemu建立mini2440的模拟仿真环境 https://www.cnblogs.com/jinmu190/archive/2011/03/21/1 ...

最新文章

  1. 无线路由器结合Windows Radius Server实现通过域账户连接公司无线网络
  2. Linu 修改maven的setting保护文件
  3. Elasticsearch Query DSL基础介绍
  4. 成功解决ValueError: If using all scalar values, you must pass an index
  5. 基于android的lbs技术,基于Android的LBS应用研究
  6. widget 工具 widget tools (add this , share this, jia this)
  7. 自学python编程免费教程-python编程入门 零基础学习Python基础(附带最新免费教程)...
  8. RichTextBox 中英文混输时,字体样式不同的解决方式
  9. 什么是水仙花数python_什么是水仙花数python
  10. vhd虚拟硬盘作用_如何从VHD(虚拟硬盘)引导和安装Windows 8 Consumer Preview的指南
  11. 噪声来源、定义及影响【转自微信公众号微波射频网】
  12. 个人网站搭建,个人网站需要什么软件
  13. 华为南研所校招软件技术岗几点建议
  14. UE4 Matinee的动画倒播
  15. scapy刺探星巴克无线网,记录顾客信息
  16. 西安科技大学计算机院复试,2014年西安科技大学计算机学院考研复试细则
  17. CFD解决一维标量问题(迎风、Lax-Wendroff、TVD、WENO5+3阶Runge-Kutta)
  18. i513400和13400f区别 i5 13400和i5 13400f选哪个好
  19. 实验二+087+饶慧敏
  20. 百度云管家5.0.0 绿色优化版

热门文章

  1. 模拟客服自动回复代码
  2. bochs上网镜像怎么上网_bochs win7镜像可上网版-bochs WIN7 IMG镜像文件下载 v1.0完整版...
  3. 设计模式之装饰器(第一篇)
  4. 阿里云国际版购买了服务器后如何下载发票?
  5. c语言中快排函数,c语言快排函数详解
  6. OSChina 周一乱弹 ——怎么用微微一石更表白!
  7. m4a转换成mp3如何操作?
  8. 射极跟随器的负载加重情况
  9. XXE(外部实体注入)| PortSwigger(burpsuite官方靶场)| Part 3
  10. 知能行vs传统备考,考研数学可以很轻松!