是否可以将配置文件与 PowerShell 脚本一起使用?
例如配置文件:
#links
link1=http://www.google.com
link2=http://www.apple.com
link3=http://www.microsoft.com
然后在PS1脚本中调用此信息:
start-process iexplore.exe $Link1
答案1
非常感谢 Dennis 和 Tim 的帮助!你们的回答让我走上了正轨,我发现这
设置.TXT
#from http://tlingenf.spaces.live.com/blog/cns!B1B09F516B5BAEBF!213.entry
#
[General]
MySetting1=value
[Locations]
InputFile="C:\Users.txt"
OutputFile="C:\output.log"
[Other]
WaitForTime=20
VerboseLogging=True
POWERSHELL 命令
#from http://tlingenf.spaces.live.com/blog/cns!B1B09F516B5BAEBF!213.entry
#
Get-Content "C:\settings.txt" | foreach-object -begin {$h=@{}} -process { $k = [regex]::split($_,'='); if(($k[0].CompareTo("") -ne 0) -and ($k[0].StartsWith("[") -ne $True)) { $h.Add($k[0], $k[1]) } }
然后
执行代码片段后,变量 ($h) 将包含 HashTable 中的值。
Name Value
---- -----
MySetting1 value
VerboseLogging True
WaitForTime 20
OutputFile "C:\output.log"
InputFile "C:\Users.txt"
*要从表中检索项目,请使用命令$h.Get_Item("MySetting1").*
答案2
有一种更方便的方法,可以使用ConvertFrom-Json
PowerShell 中的 Cmdlet 读取 JSON 格式的文件来从 JSON 文件中读取设置:
$SettingsObject = Get-Content -Path \path\to\settings.json | ConvertFrom-Json
在您的情况下,JSON 中的设置将类似于settings.json
:
{
"link1": "http://www.google.com",
"link2": "http://www.apple.com",
"link3": "http://www.microsoft.com"
}
阅读:
PS C:\> $SettingsObject = Get-Content -Path \path\to\settings.json | ConvertFrom-Json
PS C:\> $SettingsObject
link1 link2 link3
----- ----- -----
http://www.google.com http://www.apple.com http://www.microsoft.com
PS C:\> $SettingsObject.link1
http://www.google.com
答案3
有一个很好的话题这里显示此代码(引用自链接的线程):
# from http://www.eggheadcafe.com/software/aspnet/30358576/powershell-and-ini-files.aspx
param ($file)
$ini = @{}
switch -regex -file $file
{
"^\[(.+)\]$" {
$section = $matches[1]
$ini[$section] = @{}
}
"(.+)=(.+)" {
$name,$value = $matches[1..2]
$ini[$section][$name] = $value
}
}
$ini
然后你可以这样做:
PS> $links = import-ini links.ini
PS> $links["search-engines"]["link1"]
http://www.google.com
PS> $links["vendors"]["link1"]
http://www.apple.com
假设 INI 文件如下所示:
[vendors]
link1=http://www.apple.com
[search-engines]
link1=http://www.google.com
不幸的是,链接中的代码缺少正则表达式,所以您必须重现它们,但有一个版本可以处理没有节标题和注释行的文件。
答案4
为了更全面的方法,请考虑https://github.com/alekdavis/ConfigFile。此模块支持 JSON 格式的配置文件以及 INI。它允许扩展变量并执行一些巧妙的技巧。要记住的是,INI 文件中的键值对的名称必须与脚本参数或变量的名称匹配。