我正在运行以下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”失败,没有错误消息
如果脚本没有抛出任何错误。
答案 0 :(得分:1)
此声明已损坏:
$Result = New-AzureRmRoleAssignment -ObjectId $objectid - RoleDefinitionName Reader -ResourceGroupName $resourceGroupName
它应该像这样:
$Result = New-AzureRmRoleAssignment -ObjectId $objectid -RoleDefinitionName Reader -ResourceGroupName $resourceGroupName
此外,根据documentation,New-AzureRmRoleAssignment
返回一个PSRoleAssignment
对象,该对象没有属性ExitCode
,并且您不检查其状态像这样的cmdlet。 PowerShell有一个布尔值automatic variable $?
,它指示上一次cmdlet调用是否成功,因此您的代码应如下所示:
$Result = New-AzureRmRoleAssignment -ObjectId $objectid -RoleDefinitionName Reader -ResourceGroupName $resourceGroupName
if ($?) {
# Return role result
Write-Output '{ "roleResult" : "Role assigned successfully" }'
} else {
exit 1
}