【问题标题】:How to get the NIC details for Application Security Group / Resource Group如何获取应用程序安全组/资源组的 NIC 详细信息
【发布时间】:2019-01-15 16:04:52
【问题描述】:

我正在寻找一个 PowerShell 命令,该命令用于列出网络接口卡与其关联的应用程序安全组/资源组之间的关系。我使用以下命令,它只显示 VMName、IPAddress。无法显示应用程序安全组。

我已经使用了 -ExpandProperty ApplicationSecurityGroups 但仍然无法使用。

$nics =Get-AzureRmNetworkInterface -ResourceGroupName "My-RG" 

foreach($nic in $nics)
{
    $vm = $vms | where-object -Property Id -EQ $nic.VirtualMachine.id
    $Name = $nic.Name
    $prv =  $nic.IpConfigurations | select-object -ExpandProperty PrivateIpAddress
    $alloc =  $nic.IpConfigurations | select-object -ExpandProperty PrivateIpAllocationMethod
    $asc =  $nic.IpConfigurations | select-object -ExpandProperty ApplicationSecurityGroups
    Write-Output "$Name, $prv , $asc"
}

【问题讨论】:

  • 您确定该属性存在吗?
  • 只是检查一下,您确定的意思是应用程序安全组,而不是网络安全组吗?它们是两种不同的东西。

标签: azure powershell azure-resource-group


【解决方案1】:

我刚刚测试了您的命令,并且可以从配置了 ASG 的机器上成功获取应用程序安全组。但是,这仅在您将 VM 放入 ASG 时才有效,ASG 在那里提供子网内的微分段,因此您可以将您的应用程序服务器、数据库等组合在一起,并将 NSG 规则应用于组而不是单个服务器.

如果您想知道虚拟机所在的 NSG,则需要使用不同的命令。 NSG 是附加到 VM 或 NIC 并充当防火墙的资源。如果你想要,那么你需要运行:

$nsg =  $nic | select-object -ExpandProperty NetworkSecurityGroup

但是,这只会让您将 NSG 应用到 VM,您也可以在 VM 级别应用这些,因此您最好运行以下命令:

$effectiveRules=Get-AzureRmEffectiveNetworkSecurityGroup -NetworkInterfaceName <nicName> -ResourceGroupName <resourceGroup>
$effectiveRules.NetworSecurityGroup

这将列出在 NIC 或子网级别应用的所有 NSG。

【讨论】:

    【解决方案2】:

    问题是您只能从属性 IpConfigurationsText 中获取 ASG 信息作为字符串,因此您需要将查询更新为:

    $nics = Get-AzureRmNetworkInterface -ResourceGroupName "My-RG"
    
    foreach($nic in $nics)
    {
        $GetAzureNIC = Get-AzureRmNetworkInterface -ResourceGroupName "My-RG" -Name $nic.Name
        $Name = $nic.Name
        $prv =  $nic.IpConfigurations.PrivateIpAddress
        $alloc =  $nic.IpConfigurations.PrivateIpAllocationMethod
        $asgResourceID = ($GetAzureNIC.IpConfigurationsText | ConvertFrom-Json).ApplicationSecurityGroups.Id
        $asgName = (Get-AzureRmResource -ResourceId $asgResourceID).Name
        Write-Output "$Name, $prv, $alloc, $asgName, $asgResourceID"
    }
    

    编辑:我注意到您还想获取分配方法,但不要在写入输出中使用它并更新查询以包括 ASG 名称和 ASG 资源 ID,选择您需要的任何一个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-20
      • 2019-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多