0

我正在创建一个 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
   }
}
4

2 回答 2

0

您可以在 where 中执行多个条件。
这是一个类似的帖子 Where-object $_ 匹配多个条件

帖子中的示例

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

于 2020-07-17T04:29:05.593 回答
0

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

Where-Object { ($_.DestinationPortRange -eq "443" -or $_.DestinationPortRange -eq "80" -or $_.DestinationPortRange -eq "8443")
于 2020-07-17T07:17:07.743 回答