Как определить, вернул ли скрипт код завершения выхода 1 или 0 - PullRequest
0 голосов
/ 05 ноября 2018

Я запускаю приведенный ниже сценарий PowerShell, чтобы предоставить Azure IAM доступ к учетной записи хранения

#Read stdin as string
$jsonpayload = [Console]::In.ReadLine()

#Convert to JSON
$json = ConvertFrom-Json $jsonpayload

#Access JSON values
$userName = $json.userName
$resourceType = $json.resourceType
$resourceGroupName = $json.resourceGroupName

$objectid = (Get-AzureRmADUser -SearchString $userName).Id

$Result = New-AzureRmRoleAssignment -ObjectId $objectid -
RoleDefinitionName Reader -ResourceGroupName $resourceGroupName

if ($Result.ExitCode -ne 0) {
    exit 1
} else {
    # Return role result
    Write-Output '{ "roleResult" : "Role assigned successfully" }'
}

Как отобразить сообщение об успехе, если нет ошибки, есть ли альтернативное решение для обработки этого

Я получаю ошибку

Команда "Powershell.exe" завершилась без сообщения об ошибке

если сценарии не выдают никакой ошибки.

1 Ответ

0 голосов
/ 07 ноября 2018

Это утверждение нарушено:

$Result = New-AzureRmRoleAssignment -ObjectId $objectid -
RoleDefinitionName Reader -ResourceGroupName $resourceGroupName

Это должно выглядеть так:

$Result = New-AzureRmRoleAssignment -ObjectId $objectid -RoleDefinitionName Reader -ResourceGroupName $resourceGroupName

Кроме того, согласно документации New-AzureRmRoleAssignment возвращает объект PSRoleAssignment, который не имеет свойства ExitCode, и вы не проверяете так или иначе статус командлетов. PowerShell имеет логическую автоматическую переменную $?, которая указывает, был ли последний вызов командлета успешным или нет, поэтому ваш код должен выглядеть следующим образом:

$Result = New-AzureRmRoleAssignment -ObjectId $objectid -RoleDefinitionName Reader -ResourceGroupName $resourceGroupName

if ($?) {
    # Return role result
    Write-Output '{ "roleResult" : "Role assigned successfully" }'
} else {
    exit 1
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...