2012-09-11 52 views
11

有沒有辦法讀取文本文件C:\ test.txt並檢索特定值?Powershell從文本文件中檢索變量

即文件看起來像這樣:

serverName=serv8496 
midasServer=serv8194 

我想設置一個變量的值在我的腳本從這個文件,例如某種方式:

$MidasServer= (from file midasServer value) 

我不知道該線參考號碼。

任何方式來做到這一點?

回答

15

是的,讀文件,分割每行和分裂結果分配給Name和Value參數:

Get-Content file.txt | Foreach-Object{ 
    $var = $_.Split('=') 
    New-Variable -Name $var[0] -Value $var[1] 
} 
+0

這對我有用,但我不斷收到一個錯誤,說該名稱無法創建,因爲它是一個空字符串。這是爲什麼? – Pred

4

如果這是你的文件究竟是如何出現即具有表示鍵值對的列表等號,那麼你應該看看ConvertFrom-StringData其中

將包含一個或多個鍵和值對的字符串轉換爲散列表。由於每個鍵/值對必須位於不同的行上,因此這裏字符串通常用作輸入格式。

因此,如果一個文本文件,在你的例子只是所含的數據,你可以這樣做是爲了創建一個哈希表

$Path = "C:\temp\test.txt" 
$values = Get-Content $Path | Out-String | ConvertFrom-StringData 
$values.midasServer 

$values.midasServer將具有值serv8194。不需要知道屬性在文件中的位置。您的輸入文件也可以在等號周圍有不同的前後空格,這將得到完全相同的結果。

根據您的使用情況,你可以採取一步,並從該哈希表

New-Object -TypeName pscustomobject -Property $values 

創建自定義對象如果你有至少PowerShell的V3或更高版本可以簡化過程(假設你想定製psobject)

$values = [pscustomobject](Get-Content $Path -Raw | ConvertFrom-StringData) 
$values.midasServer