我一直在试图通过PowerShell推动Azure NetworkSecurityGroup规则。
使用控制台,我似乎能够创build我想要的,但是使用PowerShell,我没有什么成功。
使用以下语法:
Get-AzureRmNetworkSecurityGroup -Name $SecGroup -ResourceGroupName $RGName | Set-AzureRmNetworkSecurityGroup | Add-AzureRmNetworkSecurityRuleConfig -Name 'MSTSC' -Direction Inbound -Priority 100 -Access Allow -SourceAddressPrefix 'INTERNET' -SourcePortRange '65456' -DestinationAddressPrefix '*' -DestinationPortRange '3389' -Protocol '*'
我得到一个输出窗口似乎表明安全规则已经创build:
但是,如果我然后检查门户,或者做
Get-AzureRmNetworkSecurityGroup -Name $SecGroup -ResourceGroupName $RGName
新增的规则不在那里。
但是,如果我添加规则与门户,并尝试使用我的PowerShell命令创build它,我收到以下错误:
Add-AzureRmNetworkSecurityRuleConfig:具有指定名称的规则已经存在
我错过了什么,但什么?
这实际上是一个非常愚蠢的问题。
将新规则添加到安全组时应采取的步骤:
Get-AzureRmNetworkSecurityGroup获取安全组 Add-AzureRmNetworkSecurityRuleConfig添加新Add-AzureRmNetworkSecurityRuleConfig Set-AzureRmNetworkSecurityGroup在Azure中设置新的安全组(IE发布它) 我没有理解这些步骤,只是从互联网上复制粘贴,导致了我的错误。
当它到达第二个pipe道时,它将设置尚未更新的安全组(因此,我只是按照我所拉的那样推送组),并给我成功的消息。
之后,我在我的caching中Add新的组,这是规则的本地副本,而不会将其发布。
所以一个正确的方法是:
Get-AzureRmNetworkSecurityGroup -Name $SecGroup -ResourceGroupName $RGName | Add-AzureRmNetworkSecurityRuleConfig -Name 'MSTSC' -Direction Inbound -Priority 100 -Access Deny -SourceAddressPrefix 'INTERNET' -SourcePortRange '3389' -DestinationAddressPrefix '*' -DestinationPortRange '3389' -Protocol '*' | Set-AzureRmNetworkSecurityGroup