回答
(我計算出來而組建一個REPRO)
PS> $content = (Get-Content .\foo.pson | Out-String)
PS> $data = (Invoke-Expression $content)
Get-Content
返回與文件中的行的陣列; Out-String
用於將它們連接在一起。
Invoke-Expression
然後運行該腳本,並捕獲結果。這對注射攻擊是開放的,但在這種情況下沒關係。
或者,如果你喜歡簡潔的PowerShell的:
PS> $data = gc .\foo.pson | Out-String | iex
(我找不到Out-String
較短的形式)
如果你可以給這個文件的擴展名.ps1
,比方說,data.ps1
然後它不能簡單比這個代碼:
$data = <path>\data.ps1
確實(並且我沒有意識到我沒有點源文件),但是看起來它可以直接運行,這並不是我特別想要的。 –
我已經使用ConvertFrom-StringData。如果你想用這種方法,你就需要改變你的存儲與各自成一行鍵/值對的方式,不包括引號:
#Contents of test.txt
X = x
Y = y
get-content .\test.txt | ConvertFrom-StringData
Name Value
---- -----
X x
Y y
ConvertFrom-StringData是一個內置的cmdlet的。我創建了相應的ConvertTo-StringData函數http://poshcode.org/1986
我沒有在問題中提到它(保持簡單),但文件實際上包含一個對象樹:一個包含其他數組和哈希表的哈希表數組。 –
我遇到了麻煩,使用ConvertFrom-StringData作爲@Chad建議。如果你這樣做:
$hash = get-content .\test.txt | ConvertFrom-StringData
我發現我有一個對象數組而不是一個哈希表。事實上,我似乎有一個散列表的數組,每個都有一個條目。我證實了:
$hash.GetType()
看起來你需要加入咕嚕咕嚕輸入文件的每一行,以確保它構成了ConvertFrom一個字符串..的使用:
$hash = ((get-content .\test.txt) -join '`n') | ConvertFrom-StringData
您也可以使用'Get-ContentRaw。\ test.txt',它將文件逐行地傳送到'ConvertFrom-StringData'; http://www.geekality.net/2014/06/30/powershell-read-hashtable-from-a-file/ –
- 1. Ruby:如何從文件加載哈希?
- 2. PowerShell的哈希表
- 3. 如何在powershell中的哈希表中添加哈希表?
- 4. Powershell的添加變量在哈希表
- 5. 如何使用powershell從文件構建哈希表?
- 6. Powershell陣列或哈希表?
- 7. 使用哈希表的PowerShell
- 8. PowerShell的哈希表問題
- 9. PowerShell的:使用哈希表
- 10. Powershell哈希表問題
- 11. Powershell哈希表格爲HTML
- 12. 從sha512哈希加密文件?
- 13. PowerShell哈希表值從循環外的第二個哈希表中刪除
- 14. 如何從powershell中的哈希表值追加xml
- 15. 從文件加載的哈希和比較
- 16. C# - 使用Linq從XML文件加載哈希集字典
- 17. 在Perl中加載大文件到哈希(BLAST表格)
- 18. Powershell字典或哈希表的列表
- 19. 從數組powershell哈希構建
- 20. Powershell GUI,進度條和哈希表
- 21. Powershell哈希表和重複鍵
- 22. PowerShell的錯誤返回哈希表
- 23. Powershell陣列與單哈希表
- 24. 哈希表ConvertTo-Json PowerShell格式問題
- 25. 單哈希(C#)Powershell多個表達式
- 26. Powershell的哈希表存儲 「System.Collections.DictionaryEntry」
- 27. 哈希表Get_Item返回空行 - Powershell
- 28. 如何從CSV文件解析哈希哈希
- 29. PowerShell哈希映射類型
- 30. Powershell哈希表計數和鍵屬性獲取過載
也許這是一個Powershell 4的東西,但我可以跳過Out-String部分,只需要: $ hash = Get-Content。\ file.pson | Invoke-Expression –