带@符号的键名

Key Names With @ Symbol

我正在 PowerShell 中做一些 REST API 工作,我需要传递给 REST API 的一些键包含符号 (@)。或者,从我的 REST API 返回的一些键包含符号 (@)。

有没有办法转义这个字符并将值用作键的文字?

示例:

Context "Get Details By Machine Name" {
    Mock Invoke-RestMethod {
        return @{
            links = @{}
            content = @{
                @type           : CatalogResource
                id              : e5c83e8b-31df-4573-b14e-246ded62ba53
                iconId          : edd4f05a-5c59-485c-9d5b-d0280d7a6432
                resourceTypeRef : @{id=Infrastructure.Virtual; label=Virtual Machine}
            }
            metadata = @{
                size          = 20
                totalElements = 1
                totalPages    = 1
                number        = 1
                offset        = 0
            }
        }
    }

我需要@type作为哈希表的键。

键名以 @ 开头没有问题,如果您的键名在引号中:

PS C:\> <b>@'</b>
>> <b>{</b>
>> <b>“@foo”:42</b>
>> <b>}</b>
>> <b>'@ | ConvertFrom-Json |格式-Table -AutoSize</b>
>>

@foo
----
  42

如果您在 PowerShell 中定义哈希表,则相同:

PS C:\> <b>$ht = @{ '@foo' = 42 }</b>
PS C:\> <b>$ht</b>

名称值
---- -----
@foo 42