我在使用应该使用可变数量参数的脚本运行 powershell 时遇到问题。
脚本文件如下所示:
param( [string]$paramString )
$params = ConvertFrom-StringData $paramString
$params
Run Code Online (Sandbox Code Playgroud)
直接在 powershell 中运行脚本会产生预期结果:
[PS] C:\some\path>.\test.ps1 "a=foo `n b=bar `n c=moo"
Name Value
---- -----
c moo
a foo
b bar
Run Code Online (Sandbox Code Playgroud)
使用相同的脚本和参数从命令行调用 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
Run Code Online (Sandbox Code Playgroud)
似乎传递的字符串采用某种格式,因此该ConvertFrom-StringData函数无法再解析它。
方法-File是有问题的,因为参数不是由 cmd 计算的(在 PowerShell 中),并且新行等效项不会扩展,它们是按字面传递的。
如果我们仍然让 PowerShell 来执行此操作,则问题可以解决-Command:
powershell -nologo -command "./test.ps1 ""a=foo `n b=bar `n c=moo"""
Run Code Online (Sandbox Code Playgroud)
这很丑陋:我们必须将"命令中的每个内部都加倍。但它有效。(该命令可以由多个参数定义;我只是更喜欢使用单个参数:这种方式对我来说看起来更简单)。
| 归档时间: |
|
| 查看次数: |
27253 次 |
| 最近记录: |