Попытка настроить что-то в PowerShell, которое в конечном итоге перейдет на автоматизацию Azure.В частности, при попытке добавить новую запись DNS с помощью следующей команды:
$Hostname = "testhostname"
$Zone = "subdomain.domain.com"
$IP = "1.2.3.4"
$RG = "testresourcegroup"
New-AzureRMDNSRecordSet -Name "$Hostname" -RecordType A -ZoneName $Zone -ResourceGroupName $RG -ttl 3600 -DnsRecords (New-AzureRMDNSRecordConfig -IPv4address "$IP") -ErrorAction Stop
Команда вернет одно из следующего:
1) Если запись уже существует:
New-AzureRMDNSRecordSet : The Record set testhostname exists already and hence cannot be created again.
At line:1 char:1
+ New-AzureRMDNSRecordSet -Name "$Hostname" -RecordType A -ZoneName $Zo ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : CloseError: (:) [New-AzureRmDnsRecordSet], CloudException
+ FullyQualifiedErrorId : Microsoft.Azure.Commands.Dns.NewAzureDnsRecordSet
2) Если IP-адрес недействителен:
New-AzureRMDNSRecordSet : The provided ip address '3333.4.21.11' is not valid.
At line:1 char:1
+ New-AzureRMDNSRecordSet -Name "$Hostname" -RecordType A -ZoneName $Zo ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : CloseError: (:) [New-AzureRmDnsRecordSet], CloudException
+ FullyQualifiedErrorId : Microsoft.Azure.Commands.Dns.NewAzureDnsRecordSet
3) Успешно:
Id : /subscriptions/(subscriptionID)/resourceGroups/testresourcegroup/providers/Microsoft.Network/dnszones/subdomain.domain.com/A/testhostname
Name : testhostname
ZoneName : subdomain.domain.com
ResourceGroupName : testresourcegroup
Ttl : 3600
Etag : (removed)
RecordType : A
TargetResourceId :
Records : {1.2.3.4}
Metadata :
ProvisioningState : Succeeded
Я пытаюсь получить ошибки, используя "try"«поймать», но не удалось.Вот что я попробовал:
try {
New-AzureRMDNSRecordSet -Name "$Hostname" -RecordType A -ZoneName $Zone -ResourceGroupName $RG -ttl 3600 -DnsRecords (New-AzureRMDNSRecordConfig -IPv4address "$IP") -ErrorAction Stop #-ErrorVariable badIP -ErrorAction SilentlyContinue | Out-null
}
catch {
Write-Host "There was an error"
}
Я хотел бы получить его там, где на основании ошибки RESPONSE я могу напечатать конкретный вывод.Пример, первая ошибка: «Набор записей $ Hostname уже существует и, следовательно, не может быть создан снова».Я хотел бы иметь возможность принять это, и вместо этого, просто вывести пользователю: «Дублировать имя хоста; пожалуйста, попробуйте другой».
Я борюсь с тем, как поместить конкретные ошибки в «catch»
Любая помощь будет принята с благодарностью