[Azure]使用Powershell输出某台ARM虚拟机的NSG
这个脚本用于输出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相关推荐
- [Azure]使用Powershell输出某台ASM虚拟机的NSG和ACL
这个脚本用于输出ASM模式下虚拟机的NSG和ACL,对于多网卡虚拟机也同样适用.可以输出所有网络接口的NSG以及虚拟机所在子网的NSG. 脚本如下: param(#The name of the ...
- 微软Azure PowerShell使用指南(2) - 控制虚拟机
如上篇,选择相应的订阅信息后,我们就可以开始使用我们的云资源.这篇我们介绍如何创建虚拟机并且通过PowerShell就可以控制虚拟机. 创建虚拟机 微软提供了非常多的操作系统镜像,从Windows 2 ...
- 两台ubuntu虚拟机环境下hadoop安装配置
http://blog.itpub.net/26978437/viewspace-730136/ 按照上几篇的内容,安装好两台ubuntu虚拟机之后,首先确定好哪台机子做namenode,哪台做dat ...
- 访问局域网另外一台电脑虚拟机中CentOS7
访问局域网另外一台电脑虚拟机中CentOS7 参考: https://blog.csdn.net/yangzaiqiu1986814/article/details/50788263
- 如何构建虚拟机Hadoop集群,搭建3台ubuntu虚拟机集群
如何构建虚拟机Hadoop集群,搭建3台ubuntu虚拟机集群 克隆集群机器 通过虚拟机搭建Hadoop集群,发现使用的VMware workstation 15 player版本没有克隆功能,于是找 ...
- MAC ARM 虚拟机 安装visual studio 2019
MAC ARM 安装visual studio 2019 1.安装Parallels Desktop for Apple M1 Silicon ARM 虚拟机 2.安装win10(需要安装ARM版本) ...
- 安装一台RHEL6虚拟机
安装一台RHEL6虚拟机 问题 新建一台RHEL虚拟机,相关配置及要求如下所述. 硬盘300GB.内存2GB 分区规划: /boot 200MB./ 100GB.SWAP 4096MB./data ...
- qemu arm虚拟机联网
1.介绍 2. 互联环境搭建 2.1 准备宿主机环境 2.2 准备qemu环境 3. qemu虚拟机挂载samba文件系统 1.介绍 通过qemu模拟arm虚拟机,但由于arm虚拟机只有ramfs,有 ...
- 配置ARM虚拟机_使用qemu建立mini2440的模拟仿真环境
编者按: 参考文章&课程: leao :用qemu建立mini2440的模拟仿真环境 https://www.cnblogs.com/jinmu190/archive/2011/03/21/1 ...
最新文章
- 无线路由器结合Windows Radius Server实现通过域账户连接公司无线网络
- Linu 修改maven的setting保护文件
- Elasticsearch Query DSL基础介绍
- 成功解决ValueError: If using all scalar values, you must pass an index
- 基于android的lbs技术,基于Android的LBS应用研究
- widget 工具 widget tools (add this , share this, jia this)
- 自学python编程免费教程-python编程入门 零基础学习Python基础(附带最新免费教程)...
- RichTextBox 中英文混输时,字体样式不同的解决方式
- 什么是水仙花数python_什么是水仙花数python
- vhd虚拟硬盘作用_如何从VHD(虚拟硬盘)引导和安装Windows 8 Consumer Preview的指南
- 噪声来源、定义及影响【转自微信公众号微波射频网】
- 个人网站搭建,个人网站需要什么软件
- 华为南研所校招软件技术岗几点建议
- UE4 Matinee的动画倒播
- scapy刺探星巴克无线网,记录顾客信息
- 西安科技大学计算机院复试,2014年西安科技大学计算机学院考研复试细则
- CFD解决一维标量问题(迎风、Lax-Wendroff、TVD、WENO5+3阶Runge-Kutta)
- i513400和13400f区别 i5 13400和i5 13400f选哪个好
- 实验二+087+饶慧敏
- 百度云管家5.0.0 绿色优化版
热门文章
- 模拟客服自动回复代码
- bochs上网镜像怎么上网_bochs win7镜像可上网版-bochs WIN7 IMG镜像文件下载 v1.0完整版...
- 设计模式之装饰器(第一篇)
- 阿里云国际版购买了服务器后如何下载发票?
- c语言中快排函数,c语言快排函数详解
- OSChina 周一乱弹 ——怎么用微微一石更表白!
- m4a转换成mp3如何操作?
- 射极跟随器的负载加重情况
- XXE(外部实体注入)| PortSwigger(burpsuite官方靶场)| Part 3
- 知能行vs传统备考,考研数学可以很轻松!