azure 将标签保存到存储表中如何将其转换为哈希表

i5desfxk  于 2023-04-07  发布在  其他
关注(0)|答案(1)|浏览(121)

我正在尝试以这种方式将应用程序服务标记保存到存储表:

$srcapp = Get-AzWebApp -ResourceGroupName "myrg" -Name "myapp"
$srcapp.Tags

$srcapp.Tags是这样的类型:

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Dictionary`2                             System.Object

我正在尝试将其转换为JSON以将其保存到表中。以这种方式工作:

$jsonTag     = ConvertTo-Json -InputObject $srcapp.Tags

当我尝试从表中获取它时:

$Setting = Get-AzTableRow -Table $cloudTable -PartitionKey $PartKey -RowKey mykey

我正确地得到了字符串形式的值。当我转换它时:

ConvertFrom-Json -InputObject   $Setting.Tags

我得到了一个PSCustomObject,但是当我把它传递给new-aztag时,我得到了错误:

New-AzTag: Cannot bind parameter 'Tag'. Cannot convert value "@{xxx=xxx}" value of type "System.Management.Automation.PSCustomObject" to type "System.Collections.Hashtable"."

有办法把它转换成哈希表吗?我用的是powershell5.1
谢谢

e37o9pze

e37o9pze1#

要将其从system.Management.Automation.PsCustomObject转换为***system.Collections.hashtable***,您可以使用下面给出的PowerShell命令。

ConvertTo-Hashtable -InputObject <inputdata>

***注意:***请确保您已经安装了哈希表模块。如果没有安装,请使用以下命令安装并导入。

Install-Module -Name ConvertTo-Hashtable
Import-Module -Name ConvertTo-Hashtable

我修改了您的脚本如下:

$storageacc = "<StorageaccountName>"
$key = "xxxxxx=="
$ctx = New-AzStorageContext -StorageAccountName $storageacc -StorageAccountKey $key
$jahnavitable = (Get-Azstoragetable -table "xxxtableName" -context $ctx).cloudtable
$jahnavirow = Get-Aztablerow -Table $jahnavitable
$jahnavirow.gettype()
$convertintohash = ConvertTo-Hashtable -InputObject $jahnavirow 
$convertintohash
New-Aztag -ResourceID "<ResourceID>" -Tag $convertintohash

我得到了一个PSCustomObject,当我最初尝试New-Aztag命令时,收到了与这里所示相同的错误。

因此,我使用convertTo-Hashtable命令将其转换为哈希表,现在它是system.collections.Hashtable

现在我运行New-AzTag命令,它提示我输入ResourceID

添加要添加标签的resourceId,它将成功添加,没有任何错误。

在门户给定资源下添加标签:

相关问题