2016-09-22 81 views
-1

直接打印$ OBJ這是dummy.json文件

{ 
    "key1":"value1", 
    "key2":"value2" 
} 

我閱讀本文件的內容給一個變量並將結果輸出

C:> $obj = Get-Content .\dummy.json 
C:> $obj 
{ 
     "key1":"value1", 
     "key2":"value2" 
} 
C:> Write-Host "$obj" 
{  "key1":"value1",  "key2":"value2" } 

我知道Get-Content不保留換行符並通過「」連接它。 Powershell keep text formatting when reading in a file

但是爲什麼在上述2個輸出中存在不一致呢?我猜Write-Host正在正確地完成它的工作。或者我錯了?

+0

嗨,怎麼樣'寫主機$ obj'? – sodawillow

+0

@sodawillow是的工作,明白了。 – Srinath

回答

3

它不是Get-Content連接線(它的輸出是一個字符串數組),但你把變量放在雙引號("$obj")。你可以通過自己加入這些線來避免這種情況:

Write-Host ($obj -join "`n") 
Write-Host ($obj | Out-String) 
Write-Host $($OFS="`n"; "$obj") 

另一種選擇是直接以單個字符串的形式讀取文件。像這樣的(需要的PowerShell v3的或更高版本):

$obj = Get-Content .\dummy.json -Raw 

或像這樣:

$obj = [IO.File]::ReadAllText('.\dummy.json') 
+0

很酷,明白了。所以,我對Get-Content和Write-Host的理解是錯誤的。謝謝 :) – Srinath

相關問題