2015-06-02 29 views
1

我在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是哈希表的键。

+1

你试过报价? '$ ht = @ {“@ type”=“value”}'是一个有效的HashTable定义,使用'$ ht [“@ type”]进行访问' –

+0

ahahahaha ...我发誓我尝试过..这很明显,但我一直在寻找解决方案。甚至诉诸SO。谢谢Mathias! –

回答

2

有一个关键的首字母是@是没有问题的,如果你的键名是在引号:

PS C:\>@' 
>>{ 
>> "@foo" : 42 
>>} 
>>'@ | ConvertFrom-Json | Format-Table -AutoSize 
>> 

@foo 
---- 
    42

相同的,如果你在PowerShell中定义一个哈希表:

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

Name       Value 
----       ----- 
@foo       42