[Azure]使用Azure Powershell输出ASM模式下某个账号中所有订阅下的虚拟网络拓扑
来源:互联网 发布:js动态添加class样式 编辑:程序博客网 时间:2024/05/22 16:45
该脚本输出ASM模式下某个账号中所有订阅下的网络拓扑结构,包括虚拟网络地址空间,子网范围,子网内的虚拟机的基本信息等。
脚本如下:
$Cred = New-Object System.Management.Automation.PSCredential("XXXXXXXXX@XXXXXXXXX.partner.onmschina.cn",(ConvertTo-SecureString "XXXXXXXXX" -AsPlainText -Force));$AzureRMCred = Get-Credential -Credential $Cred;Add-AzureAccount -Environment AzureChinaCloud -Credential $AzureRMCred;Function WriteToXMLOutput($str){ $OutputfilePath = $PSScriptRoot + "\Network_Topology.xml"; $str | Out-File $OutputfilePath -Append;}Function BuildLevelSpace($level){ $levelSpace = " "; $result = ""; for ($i = 1; $i -lt $level; $i++) { $result += $levelSpace; } return $result;}Function BuildSubscriptionsHead(){ return (BuildLevelSpace 1) + "<subscriptions>";}Function BuildSubscriptionsEnd(){ return (BuildLevelSpace 1) + "</subscriptions>";}Function BuildSubscriptionHead($subscriptionName){ return (BuildLevelSpace 2) + "<subscription name='$subscriptionName'>";}Function BuildSubscriptionEnd($subscriptionName){ return (BuildLevelSpace 2) + "</subscription>";}Function BuildVirtualNetworksHead(){ return (BuildLevelSpace 3) + "<virtualnetworks>";}Function BuildVirtualNetworksEnd(){ return (BuildLevelSpace 3) + "</virtualnetworks>";}Function BuildVirtualNetworkHead($name, $address, $location){ return (BuildLevelSpace 4) + "<virtualnetwork Name='$name' AddressSpace='$address' Location='$location'>";}Function BuildVirtualNetworkEnd(){ return (BuildLevelSpace 4) + "</virtualnetwork>";}Function BuildSubnetsHead(){ return (BuildLevelSpace 5) + "<subnets>";}Function BuildSubnetsEnd(){ return (BuildLevelSpace 5) + "</subnets>";}Function BuildSubnetHead($name, $address){ return (BuildLevelSpace 6) + "<subnet Name='$name' AddressRange='$address'>";}Function BuildSubnetEnd(){ return (BuildLevelSpace 6) + "</subnet>";}Function BuildVirtualMachinesHead(){ return (BuildLevelSpace 7) + "<virtualmachines>";}Function BuildVirtualMachinesEnd(){ return (BuildLevelSpace 7) + "</virtualmachines>";}Function BuildVirtualMachine($Name, $OSType, $Size, $IPAddress){ if($IPAddress -ne $NULL) { return (BuildLevelSpace 4) + "<virtualmachine Name='$Name' OS='$OSType' Size='$Size' IPAddress='$IPAddress'></virtualmachine>"; } else { return (BuildLevelSpace 4) + "<virtualmachine Name='$Name' OS='$OSType' Size='$Size'></virtualmachine>"; }}Function ListVNETTopology(){ $subscriptions = Get-AzureSubscription; WriteToXMLOutput ((BuildLevelSpace 1) + "<?xml version='1.0'?>"); WriteToXMLOutput (BuildSubscriptionsHead); # loop all the subscriptions foreach($subscription in $subscriptions) { $subscriptionName = $subscription.SubscriptionName; Select-AzureSubscription -SubscriptionName $subscriptionName; WriteToXMLOutput (BuildSubscriptionHead $subscriptionName); # initialize mappings $VMDict = @{}; # key:vm.ServiceName#vm.Name value:@{Name=vm.Name; OSType=vm.VM.OSVirtualHardDisk.OS; Size=vm.VM.RoleSize; IpAddress=$vm.IpAddress} $VNET_VM_Map = @{}; # key:VirtualNetworkName#SubnetName value:vm.ServiceName#vm.Name $vms = Get-AzureVM; foreach($vm in $vms) { $VMDict.Add(($vm.ServiceName + "#" + $vm.Name), @{Name=$vm.Name; OSType=$vm.VM.OSVirtualHardDisk.OS; Size=$vm.VM.RoleSize; IpAddress=$vm.IpAddress}); $key = $vm.VirtualNetworkName + "#" + $vm.VM.ConfigurationSets.SubnetNames; if(!$VNET_VM_Map.ContainsKey($key)) { $VNET_VM_Map[$key] = New-Object System.Collections.ArrayList; } $VNET_VM_Map[$key].Add($vm.ServiceName + "#" + $vm.Name); } $vnetConfig = Get-AzureVNetConfig; $vnetXml = [xml]($vnetConfig.XMLConfiguration); $vnets = $vnetXml.NetworkConfiguration.VirtualNetworkConfiguration.VirtualNetworkSites.ChildNodes; if($vnets.Count -gt 0) { WriteToXMLOutput (BuildVirtualNetworksHead); foreach($vnet in $vnets) { $vnetaddress = ""; foreach($prefix in $vnet.AddressSpace.AddressPrefix) { $vnetaddress += $prefix; $vnetaddress += " " } $vnetaddress.TrimEnd(' '); WriteToXMLOutput (BuildVirtualNetworkHead $vnet.name $vnetaddress $vnet.Location); $subnets = $vnet.Subnets.ChildNodes; if($subnets.Count -gt 0) { WriteToXMLOutput (BuildSubnetsHead); foreach($subnet in $subnets) { WriteToXMLOutput (BuildSubnetHead $subnet.Name $subnet.AddressPrefix); $key = $vnet.name + "#" + $subnet.name; if($VNET_VM_Map[$key].Count -gt 0) { WriteToXMLOutput (BuildVirtualMachinesHead); foreach($vmKey in $VNET_VM_Map[$key]) { $vmProp = $VMDict[$vmKey]; $vmName = $vmProp["Name"]; $OSType = $vmProp["OSType"]; $size = $vmProp["Size"]; $cip = $vmProp["IpAddress"]; WriteToXMLOutput (BuildVirtualMachine $vmName $OSType $size $cip); } WriteToXMLOutput (BuildVirtualMachinesEnd); } WriteToXMLOutput (BuildSubnetEnd); } WriteToXMLOutput (BuildSubnetsEnd); } WriteToXMLOutput (BuildVirtualNetworkEnd); } WriteToXMLOutput (BuildVirtualNetworksEnd); } WriteToXMLOutput (BuildSubscriptionEnd); } WriteToXMLOutput (BuildSubscriptionsEnd);}ListVNETTopology
脚本输出:
50 0
- [Azure]使用Azure Powershell输出ASM模式下某个账号中所有订阅下的虚拟网络拓扑
- [Azure]使用Azure Powershell输出ARM模式下某个账号中所有订阅下的虚拟网络拓扑
- [Azure]使用Powershell输出Azure订阅下所有虚拟机的ACL信息
- [Azure]使用Azure Powershell查看ASM模式下Azure存储中的vhd文件对应的虚拟机
- [Azure] 使用Azure Powershell脚本查看账号下所有订阅中的云服务公网IP地址绑定情况
- [Azure]ARM模式下使用Powershell找出订阅中没有被使用的vhd
- [Azure]使用Powershell获取Azure ARM模式订阅下的一些常用信息
- [Azure]使用Azure Powershell清理ASM模式下未使用的Disk和vhd
- [Azure]ARM中使用Azure Powershell批量规划虚拟网络
- [Azure]使用Azure Powershell查看ARM模式下Azure存储中的vhd文件对应的虚拟机
- [Azure]使用Powershell统计经典存储账号下容器中Blob的使用情况
- [Azure]使用Powershell统计ARM存储账号下容器中Blob的使用情况
- [Azure]使用Powershell输出经典模式下全部云服务的VIP
- 使用 Azure PowerShell 管理 Azure 虚拟网络和 Windows 虚拟机
- [Azure]获取当前订阅下所有ARM虚拟机的PublicIP
- [Azure]使用Powershell输出某台ASM虚拟机的NSG和ACL
- [Azure]使用Powershell获取ARM模式下可用的虚拟机平台映像信息
- [Azure]使用Azure Powershell重新部署ASM虚拟机
- Linux内核学习开始
- Quartz的任务的临时启动和暂停和恢复
- Error occurred during initialization of VM Could not reserve enough space for 1572864KB object heap
- PAT BASIC 1035
- Partition List
- [Azure]使用Azure Powershell输出ASM模式下某个账号中所有订阅下的虚拟网络拓扑
- Node.js最新版在Windows 64位的安装
- 大臣的旅费(2次dfs)
- HTML_3th_表格
- 一个前端工程师的自我修养
- msysgit简单使用教程
- ajax get和post区别
- 实现点击在组件下方弹出单选框。并且选中哪个哪个后方显示对勾。文字变色。同时展示Popupwindow实现和遮罩效果
- 将任务加入到Eventloopthread