2012-09-11 48 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