我正在尝试按顺序运行powershell。我有以下片段。
$TestdevlandingStorageAccount = Get-AzureRmStorageAccount -ResourceGroupName "Test_Storage" -AccountName "Testdevlanding";
$TestuatlandingStorageAccount = Get-AzureRmStorageAccount -ResourceGroupName "Test_Storage" -AccountName "Testuatlanding";
Set-AzureRmKeyVaultAccessPolicy -VaultName "MyOrgTest" -ObjectId $TestdevlandingStorageAccount.Identity.PrincipalId -PermissionsToKeys wrapkey,unwrapkey,get;
Set-AzureRmKeyVaultAccessPolicy -VaultName "MyOrgTest" -ObjectId $TestuatlandingStorageAccount.Identity.PrincipalId -PermissionsToKeys wrapkey,unwrapkey,get;
我在执行上述命令时遇到错误(第一Set
命令成功运行):
Set-AzureRmKeyVaultAccessPolicy : Cannot validate argument on parameter 'ObjectId'. The argument is null or empty. Provide an argument that is not null or empty, and then try the
command again.
At C:SomePath\PowerShellStorageEncryption.ps1:27 char:71
+ ... " -ObjectId $TestprodpublishedStorageAccount.Identity.PrincipalId -P ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidData: (:) [Set-AzureRmKeyVaultAccessPolicy], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.Azure.Commands.KeyVault.SetAzureKeyVaultAccessPolicy
如果我只运行一个组操作,那么它将执行正常:
$TestdevlandingStorageAccount = Get-AzureRmStorageAccount -ResourceGroupName "Test_Storage" -AccountName "Testdevlanding";
Set-AzureRmKeyVaultAccessPolicy -VaultName "HoneywellTest" -ObjectId $TestdevlandingStorageAccount.Identity.PrincipalId -PermissionsToKeys wrapkey,unwrapkey,get;
我尝试在Google上搜索如何按顺序运行powershell命令,大多数答案建议使用我现在使用的;
而没有任何运气。
有人可以建议我可能遗失的内容吗?
非常感谢提前。
答案 0 :(得分:0)
无法验证参数' ObjectId'的参数。参数为null或空。提供一个非null或空的参数,然后尝试 命令再次。
表示export class Address {
constructor(data: object) {
super();
Object.assign(this, data);
}
...
}
为空,因此原始PrincipalId
可能找不到存储帐户。但也要确保你不会有错字。
Get-AzureRmStorageAccount
您姓名中的-ObjectId $aTestuatpublishedStorageAccount.Identity.PrincipalId
并不反映您使用的其他变量名称。
尝试:
$[a]TestuatpublishedStorageAccount
要验证您实际上是否正在获取PrincipalId,您可以运行以下命令:
$TestdevlandingStorageAccount = (Get-AzureRmStorageAccount -ResourceGroupName "Test_Storage" -AccountName "Testdevlanding").Identity.PrincipalId;
$TestuatlandingStorageAccount = (Get-AzureRmStorageAccount -ResourceGroupName "Test_Storage" -AccountName "Testuatlanding").Identity.PrincipalId;
Set-AzureRmKeyVaultAccessPolicy -VaultName "HoneywellTest" -ObjectId $TestdevlandingStorageAccount -PermissionsToKeys wrapkey,unwrapkey,get;
Set-AzureRmKeyVaultAccessPolicy -VaultName "HoneywellTest" -ObjectId $TestuatlandingStorageAccount -PermissionsToKeys wrapkey,unwrapkey,get;
答案 1 :(得分:0)
我注意到errormessage显示的变量名称不正确:
-ObjectId $aTestuatpublishedStorageAccount.Identity.PrincipalId
在您的代码段中,您使用$TestuatlandingStorageAccount
您是否第一次运行代码时输错了? 我认为伯尼怀特有正确的答案。
答案 2 :(得分:0)
我发现了这个问题,
并非所有存储帐户都分配了身份。我使用下面的命令为我的所有存储帐户分配了身份,然后我可以成功运行命令。
Set-AzureRmStorageAccount -ResourceGroupName "MyResourceGroup" -AccountName "mystorageaccount" -AssignIdentity
真的很抱歉!我只是假设因序列而存在问题。我尝试删除这个问题,但不能。
非常感谢回答我问题的所有人。