【问题标题】:Azure Powershell Scripting parametersAzure Powershell 脚本参数
【发布时间】:2019-04-18 17:57:12
【问题描述】:

美好的一天

我的任务是收集我们不同订阅中所有 VM 的列表,并且我有一个脚本可以收集:模式、名称、资源组名称、位置、VMSize 和状态。有两个空列:订阅和可用性集。

有点背景故事,我签约的公司聘请了供应商来部署资源,现在他们不知道供应商是否做了他们应该做的事情。

我想弄清楚的:

  1. 如何列出资源所在的 ASG
  2. 资源所在的 NSG
  3. vCPU 和 RAM
  4. 存储帐户

我一直在搜索谷歌以找到我需要定义的 PSObject。任何帮助将不胜感激

【问题讨论】:

标签: azure powershell


【解决方案1】:

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

【讨论】:

  • 乔伊,谢谢你。我注意到您在检索 ASG 时选择了单台机器。我假设我可以创建一个 for 循环来通过我们在 azure 帐户中拥有的所有 178 个资源运行此命令。对于 NSG,我们确实在子网上分配了它们,所以我想我可以通过这种方式获得它。最后两个很有意义。再次感谢!
猜你喜欢
  • 1970-01-01
  • 2018-02-28
  • 1970-01-01
  • 2021-11-06
  • 2019-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多