1

我正在尝试以编程方式将标签添加到 Azure 政府中的资源。当我尝试在没有标签的资源上设置标签时,我正在使用 Set-AzureRmResource 命令。我已经尝试过设置 ApiVersion 和没有(没有应该使用最新的)当我使用 Debug 标志时,它显示正在设置的版本,但我仍然在下面收到错误。

Set-AzureRmResource : Cannot validate argument on parameter 'ResourceId'. The argument is null or empty. Provide an
argument that is not null or empty, and then try the command again.
At line:1 char:108
+ ... ONMENT=""; ORGANIZATION="" } -ResourceId $resource.ResourceId  -Force ...
+                                              ~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidData: (:) [Set-AzureRmResource], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.Azure.Commands.ResourceManager.Cmdlets.Implem
   entation.SetAzureResourceCmdlet

我试图运行的代码片段如下。

Set-AzureRmResource -Tag @{ ENVIRONMENT=""; ORGANIZATION="" } -ResourceId $resource.ResourceId  -Force

编辑:指定 Azure 政府编辑 2:从代码中删除显式版本设置

4

3 回答 3

1

我尝试在 Azure Government 中使用新的 Az 命令:

Set-AzResource -Tag @{ ENVIRONMENT=""; ORGANIZATION="" } -ResourceId $resource.ResourceId  -Force

..它对我来说很好。(使用较旧的 AzureRm 命令时出现序列化错误)。仅供参考...不确定您昨天何时尝试过,但有一个 DNS 问题导致一些服务中断,这可能导致错误错误。

于 2019-01-30T18:03:08.043 回答
1

我针对 Azure 政府资源测试了上面的代码片段,并使用 AzureRM 模块版本 6.13.1 正常工作。

您可以通过运行此代码段来获得您的版本

Get-Module AzureRM -List
于 2019-01-31T15:44:34.687 回答
0

对于将来看到这一点的任何人。问题是 Azure 在 ResourceId 中编码“#”符号的方式中的一个已知错误。所以不要在资源字符串中使用“#”。

我们正在进行的代码更改是使用以下内容:

 $resource.ResourceId = $resource.ResourceId.Replace("#", "%23")

如果您有 # 符号,则简单修复,或者将您的治理更改为不使用“#”命名事物。

感谢所有其他回复。我们必须开一张票才能获得这些信息。

于 2019-01-31T22:48:59.180 回答