1.如何列出资源所在的ASG
如果要列出VM中所有的ASG,需要通过所有的网卡列出,可以参考下面的命令,$asgnames是所有ASG的列表,注意 如果不同网卡的ASG相同,会输出多次。
$nics = (Get-AzureRmVM -ResourceGroupName "<ResourceGroupName>" -Name "<VM Name>").NetworkProfile.NetworkInterfaces
$nicnames = @()
$asgnames = @()
foreach($nic in $nics){
$a = $nic.Id -split"/"
$nicname = $a[8]
$nicnames += $nicname
$ipconfig = Get-AzureRmResource -ResourceGroupName <ResourceGroupName> -ResourceType Microsoft.Network/networkInterfaces/ipConfigurations -ResourceName "$nicname/ipconfig1" -ApiVersion 2018-07-01
$asgids = $ipconfig.Properties.applicationSecurityGroups.id
foreach ($asgid in $asgids){
$a = $asgid -split"/"
$asganme = $a[8]
$asgnames += $asganme
}
}
2.资源所在的NSG
如果要在 VM 中获取 NSG,则需要通过所有 NIC 和 VNET 子网获取它们。
获取网卡的NSG,$nsgnic就是NSG:
$nic = Get-AzureRmResource -ResourceGroupName <ResourceGroupName> -ResourceType Microsoft.Network/networkInterfaces -ResourceName "<NIC name>" -ApiVersion 2018-07-01
$a = $nic.properties.networkSecurityGroup.id -split"/"
$nsgnic = $a[8]
获取子网的 NSG,$nsgsub 是 NSG:
$subnet = Get-AzureRmResource -ResourceGroupName <ResourceGroupName> -ResourceType Microsoft.Network/virtualNetworks/subnets -ResourceName "<Vnet name>/<Subnet name>" -ApiVersion 2018-07-01
$b = $subnet.properties.networkSecurityGroup.id -split"/"
$nsgsub = $a[8]
那么VM的NSG将是$nsgnic和$nsgsub的sum。
3.vCPU 和 RAM
试试下面的命令,NumberOfCores 是 vCPUs,MemoryInMB 是 RAM,注意 RAM结果是MB,如有必要,您可以将其转换为GB。
Get-AzureRmVMSize -ResourceGroupName "<ResourceGroupName>" -VMName "<VMName>"
4.存储账户
如果我没理解错的话,这里的存储账户是指Diagnostics storage account,试试下面的命令,$storage是存储账户的uri。
$a = Get-AzureRmResource -ResourceGroupName <ResourceGroupName> -ResourceType Microsoft.Compute/virtualMachines -ResourceName "<VM Name>" -ApiVersion 2018-06-01
$storage = $a.properties.diagnosticsProfile.bootDiagnostics.storageUri