[英]How do I pass a string parameter to Powershell for ConvertFrom-StringData from command line?
我在使用应该使用可变数量参数的脚本运行PowerShell时遇到问题。
脚本文件如下所示:
param( [string]$paramString )
$params = ConvertFrom-StringData $paramString
$params
直接在powershell中运行脚本会产生预期的结果:
[PS] C:\some\path>.\test.ps1 "a=foo `n b=bar `n c=moo"
Name Value
---- -----
c moo
a foo
b bar
使用相同的脚本和参数从命令行调用powershell会显示:
C:\some\path>powershell -nologo -file ./test.ps1 "a=foo `n b=bar `n c=moo"
Name Value
---- -----
a foo `n b=bar `n c=moo
看起来传递的字符串是某种格式,因此ConvertFrom-StringData
函数无法解析它。
使用-File
方法是有问题的,因为参数不是由cmd评估的(在PowerShell中),并且没有扩展等效的新行,它们按字面意思传递。
如果我们仍然让PowerShell通过使用-Command
来实现这个问题,那么问题就解决了:
powershell -nologo -command "./test.ps1 ""a=foo `n b=bar `n c=moo"""
这是丑陋的:我们必须加倍每个内"
的命令,但它的工作原理(该命令可以由几个参数来定义,我只是更喜欢使用一个参数:这样看起来简单的我)。
使用单引号将参数传递给powershell,使用如下脚本:
C:\some\path>powershell .\test.ps1 'a=foo' 'b=bar' 'c=moo'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.