繁体   English   中英

如何从命令行将字符串参数传递给Powershell for ConvertFrom-StringData?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM