2015-06-02 32 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