向 Internet 公开的 Azure NSG 规则

Azure NSG rules exposed to internet

我正在创建一个 PS 脚本来获取 Azure NSG 中允许上网的所有端口,这里的问题是我想在下面的脚本中通过端口号获取我只能获取一个端口但是如何获取多个端口。

目前我正在取443,同时想取80和8443,我可以写逻辑吗 -eq 以下脚本的条件

$subscriptions = 'xxxxxxx'
foreach ($azsub in $subscriptions)
{
set-AzContext -subscription $azsub
$aznsgs = Get-AzNetworksecuritygroup
 foreach ($aznsg in $aznsgs)
  { 
    Get-Aznetworksecurityruleconfig -networksecuritygroup $aznsg | Where-Object { $_.DestinationPortRange -eq "443"  | Select-object `
                   @{label = 'NSG name'   ; expression = {$aznsg.name}}, ` 
                   @{label = 'Rulename'   ; expression = {$_.name}} , `
                   @{label = 'Port Range' ; expression = {$_.destinationportrange}} , 'access' , 'priority' , 'direction', `
                   @{label = 'RG name'    ; expression = {$aznsg.resourcegroupname}`
         } | Export-Csv -path "C:\Users\xxxx\Documents\NSG.CSV" -NoTypeInformation -Append
   }
}

你可以在where中做多个条件。
这是一个类似的 post Where-object $_ matches multiple criterias

示例来自 post

data | Where-Object{
  $_.Name -eq "$serverName.chrobinson.com" -and (
     $_.Description1 -match "bnx2x" -or
     $_.Description1 -match "be2net"
  )
} | Select-Object -expand version

只需更新您的 where 子句以包含所有这些。

Where-Object { ($_.DestinationPortRange -eq "443" -or $_.DestinationPortRange -eq "80" -or $_.DestinationPortRange -eq "8443")