我有Azure环境,必须为所有订阅将防火墙规则添加到所有Pass服务器中。 所有订阅的服务器名称和资源组均不同。 例如:Enterprise \ dev订阅。
Server RESOURCE GROUP SUBSCRIPTION
caddvsql11 DwDvRg01 Enterprise Dev/Test
caduasql11 DwUtRg01 Enterprise Dev/Test
cmspcsql01 CmsPcRg01 Enterprise Dev/Test
quomosql11 QuoMoRg11 Enterprise Dev/Test
Set-AzureRmContext "Enterprise\dev "
new-AzureRmSqlServerFirewallRule -ResourceGroupName "DwDvRg01" -ServerName "caddvsql11" -FirewallRuleName "SAM_HOME" -StartIpAddress "22.7.180.91"
-EndIpAddress "22.7.180.91"
我可以使用此查询为单个服务器添加IP地址,但是我需要在Azure和所有具有不同服务器和资源组的Paas服务器中添加此防火墙规则名称和IP地址。 有人可以帮我吗。
答案 0 :(得分:0)
Set-AzureRmContext是较旧的版本。 Cloud Shell已迁移到新的Az cmdlet。
如果所有资源组都在相同的Subscription ID下,则可以扩展您使用的脚本,以在其余三台服务器上包括防火墙规则。
如果它们全部属于单个订阅,则需要包括cmdlet(Connect-AzAccount),然后使用Set-AzContext cmdlet在订阅之间进行切换。
如果通过Azure门户通过Cloud Shell会话进行连接,则可以使用Set-AzContext在订阅之间进行切换。如果您是从桌面环境运行的,并且需要首先进行身份验证,则需要Connect-AzAccount cmdlet。
答案 1 :(得分:0)
您可以使用所有必需的输入创建一个简单的csv文件,然后使用Import-csv命令。
这是一个简单的csv和脚本示例。您可以添加所需的任何其他列,并在适当的命令中使用这些值。
foreach($rule in import-csv "E:\firewallrules.csv")
{
Write-Host "Processing item with.. Server="$rule.Server "Resource Group ="$rule.ResourceGroup "Subscription="$rule.Subscription
# Make use of variables like $rule.Server and so on in your commands here..
}