2015-10-19 214 views
3

在PowerShell中我有我從文件中讀取並需要轉換爲JSON以下字符串:PowerShell的字符串轉換成JSON

"@{Account='User01';Domain='Domain01';Admin='True'}" 

在我的PS腳本中,我嘗試這樣做(簡體):

$myStr = "@{Account='User01';Domain='Domain01';Admin='True'}" | ConvertTo-Json 
$mystr 

myStr結果是:

"@{Account=\u0027User01\u0027;Domain=\u0027Domain01\u0027;Admin=\u0027True\u0027}" 

,而不是一個JSON我可以使用。請注意字符串開頭的@符號是我從文件中得到的。

如何將它轉換爲我可以使用的對象?

回答

4

您可以嘗試一些字符串操作以獲得預期的JSON格式,然後使用ConvertFrom-Json將其轉換爲PSCustomObject

簡單的例子:(簡單,因爲這假定被替換這些字符將只定界符)

# First, clean up the string. 
PS C:\> $mystring = "@{Account='User01';Domain='Domain01';Admin='True'}" 
PS C:\> $mystring = $mystring -replace "^@", "" 
PS C:\> $mystring = $mystring -replace "=", ":" 
PS C:\> $mystring = $mystring -replace ";", "," 
PS C:\> $mystring 
{Account:'User01',Domain:'Domain01',Admin:'True'} 

# Afterwards, convert to PSCustomObject. 
PS C:\> $myobject = $mystring | ConvertFrom-Json 
PS C:\> $myobject 

Account         Domain         Admin 
-------         ------         ----- 
User01         Domain01        True 

這也可以被轉換回JSON:

PS C:\> $myobject | ConvertTo-Json 
{ 
    "Account": "User01", 
    "Domain": "Domain01", 
    "Admin": "True" 
}