【发布时间】:2014-10-14 01:16:04
【问题描述】:
PowerShell 模块清单文件格式 (.psd1) 本质上是带有特定键的 Hashtable 文字。这是 PowerShell 脚本的配置文件的理想选择。我最终想要做的是读取一个 .psd1 文件,其中包含一组特定于脚本的键。
例如(MyScriptConfig.psd1):
@{
FTPHost = "ftp.blah.com"
FTPUserName = "blah"
FTPPassword = "blah"
}
没有理由我不能使用 XML、INI、JSON 或其他任何东西来获取这些信息,但我宁愿它使用与 PowerShell 的模块清单相同的基本数据格式。
显然,最简单的方法是读取文本并将其传递给Invoke-Expression,这将返回一个哈希表,但随后它会调用文件中的任何内容,这容易出错并且可能不安全。
我想我想起了一个使用 PowerShell cmdlet 的“安全”子集读取这些数据的 cmdlet,但我想到了 ConvertFrom-StringData 和 DATA 部分,这两个部分都不允许我读取包含 Hashtable 文字的任意文件.
PowerShell 中是否有内置的东西可以让我这样做?如果没有内置任何东西,那么我可能会使用ConvertFrom-StringData 走 JSON 或 Key=Value 的路线。
【问题讨论】:
标签: powershell