Я пытаюсь выполнить следующие команды, чтобы изменить настройки существующего правила в моем шлюзе приложений Azure:
$updatedAppGW = Set-AzureRmApplicationGatewayRequestRoutingRule -ApplicationGateway $AppGW `
-Name $ChosenSubscription.httpsRule `
-RuleType Basic `
-BackendAddressPool $backendPool `
-BackendHttpSettings $httpSettings
# Save Gateway configuration
Write-Host "[$(__LINE__)] Attempting to save changes to the Application Gateway..." -ForegroundColor Cyan
Set-AzureRmApplicationGateway -ApplicationGateway $updatedAppGW | Out-Null
Set-AzureRmApplicationGatewayRequestRoutingRule
Похоже, что команда работает правильно (по крайней мере, без вывода сообщений).
Однако, когда я пытаюсь «сохранить» конфигурацию шлюза приложений с помощью команды Set-AzureRmApplicationGateway
, я получаю сообщение об ошибке Set-AzureRmApplicationGateway : Object reference not set to an instance of an object.
Я думаю, это потому, что я не правильно использую эти команды "Set".
Я прочитал в Интернете, что когда я запускаю Set-AzureRmApplicationGatewayRequestRoutingRule
,Я на самом деле внослю изменения только в локальную память.Затем я должен сохранить изменения шлюза приложений.
Это правда?Если так ... как мне на самом деле сохранить конфигурацию шлюза приложений в этом контексте?Ранее в моем скрипте при использовании команд Add-AzureRm
(например, Add-AzureRmApplicationGatewayBackendAddressPool
) я немедленно (в следующей строке) запустил Set-AzureRmApplicationGateway
, и он работал как положено.
Я также пытался изменитьКоманда Set-AzureRmApplicationGateway
в блоке кода в верхней части этого поста, чтобы использовать мою исходную переменную $AppGW
вместо этой переменной $updatedAppGW
, которую я думаю, производит моя Set-AzureRmApplicationGatewayRequestRoutingRule
команда.Ни один из них не работает - идентичная ошибка.
РЕДАКТИРОВАТЬ: дополнительная диагностика
Добавление следующего вывода Write-Host ...
Write-Host "[$(__LINE__)] Retrieved AG Rule '$($rule.Name)'." -ForegroundColor Magenta
Write-Host "[$(__LINE__)] Attempting to change this rule to point at Backend Address Pool '$($backendPool.Name)' and HTTP Settings '$($httpSettings.Name)'..." -ForegroundColor Cyan
# Re-retrieve the Application Gateway after saving it earlier
$AppGW = Get-AzureRmApplicationGateway -Name $ChosenSubscription.appGateway -ResourceGroupName $ChosenSubscription.resourceGroup
# Re-retrieve the Backend Address Pool and HTTP Settings that we've created, for the sake of updating the rule
$backendPool = Get-AzureRmApplicationGatewayBackendAddressPool -ApplicationGateway $AppGW -Name $MaintenanceToggleBackendPool
$httpSettings = Get-AzureRmApplicationGatewayBackendHttpSettings -ApplicationGateway $AppGW -Name $MaintenanceToggleHTTPSetting
Write-Host "[$(__LINE__)] `$AppGW.Name $($AppGW.Name)" -ForegroundColor Green
Write-Host "[$(__LINE__)] `$AppGW.ProvisioningState $($AppGW.ProvisioningState)" -ForegroundColor Green
Write-Host "[$(__LINE__)] `$AppGW.OperationalState $($AppGW.OperationalState)" -ForegroundColor Green
$updatedAppGW = Set-AzureRmApplicationGatewayRequestRoutingRule -ApplicationGateway $AppGW `
-Name $ChosenSubscription.httpsRule `
-RuleType Basic `
-BackendAddressPool $backendPool `
-BackendHttpSettings $httpSettings
Write-Host "[$(__LINE__)] `$updatedAppGW.Name $($updatedAppGW.Name)" -ForegroundColor Green
Write-Host "[$(__LINE__)] `$updatedAppGW.ProvisioningState $($updatedAppGW.ProvisioningState)" -ForegroundColor Green
Write-Host "[$(__LINE__)] `$updatedAppGW.OperationalState $($updatedAppGW.OperationalState)" -ForegroundColor Green
# Save Gateway configuration
Write-Host "[$(__LINE__)] Attempting to save changes to the Application Gateway..." -ForegroundColor Cyan
Set-AzureRmApplicationGateway -ApplicationGateway $updatedAppGW | Out-Null
... дает следующий вывод консоли: