有什么方法可以告诉powershell从使用正常语法格式化的字符串构造一个哈希表来内联创建哈希表?
例如,有没有办法做这样的事情:
$fooHashString = "@{key='value'}
$fooHash = TellPowershellToEvaluateSpecialStringExpressions($fooHashString)
$fooHash
Name Value
---- -----
key value
Run Code Online (Sandbox Code Playgroud)
嗯,发布此内容后不久,我偶然发现了答案。我只需要在字符串上使用“Invoke-Expression”命令。
$fooHashString = "@{key='value'}"
$fooHash = Invoke-Expression $fooHashString
$fooHash
Name Value
---- -----
key value
Run Code Online (Sandbox Code Playgroud)
使用 Invoke-Expression 被视为代码异味的原因有很多。有关此内容的详细信息,请参阅以下博客文章
如果您使用 PowerShell 3.0 或更高版本,另一种方法是使用 ConvertFrom-StringData。您可以在 MSDN 页面ConvertFrom-StringData上找到有关如何使用它的详细信息
在您的情况下,您可以使用以下内容来创建 HashTable
$HashString = "key1=value1 `n key2=value2"
ConvertFrom-StringData -StringData $HashString
Run Code Online (Sandbox Code Playgroud)
或者,您可以像这样在此处的字符串中生成内容
$HashString = @'
key1 = value1
key2 = value2
'@
ConvertFrom-StringData -StringData $HashString
Run Code Online (Sandbox Code Playgroud)
不幸的是,如果您包含\在字符串中,这将不起作用,因为ConvertFrom-StringDataCmdLet 将其视为转义字符。
| 归档时间: |
|
| 查看次数: |
7413 次 |
| 最近记录: |