【发布时间】:2021-02-07 09:10:09
【问题描述】:
所以我的脚本很简单。我有一个命令需要使用 OpenVPN 执行,所以我需要 cd 到该文件夹并执行:.\openvpn.exe $someCommand。
问题是,当我尝试使用cd 或Set-Location 时出现此错误:
Set-Location : Cannot convert 'System.Object[]' to the type 'System.String' required by parameter 'Path'. Specified method is not supported.
在搜索解决方案后,我找到了使用Get-ChildItem -Path $path 的解决方法,然后使用$_.Directory 属性,但这也不起作用。
基本上我有这样的东西:
$openVpnPath = "C:\Program Files\OpenVPN\bin"
Invoke-Command -ScriptBlock {
Set-Location $openVpnPath,
".\openvpn.exe $conf"
}
该位置是常规路径。如果你想知道为什么Set-Location 的末尾有一个逗号,那是因为我读到我可以在同一个Invoke-Command 块中执行 2 个命令。我错了吗?
谢谢:)
【问题讨论】:
-
额外的
".\openvpn.exe $conf"究竟应该为 Set-Location 做什么?还是您可能不打算在第一个命令的末尾使用逗号 -
Set-Location 采用单个字符串作为 -Path 参数。我怀疑您在路径中有空格,并且该命令将您传递的任何内容视为多条路径。简而言之,将路径放在引号中,或者仅使用完整路径引用 .\openvpn.exe(也包含在引号中)。顺便说一句,我刚刚注意到脚本块。使用 $using:openVpnPath 来引用变量。
-
删除
Set-Location $openVpnPath之后的, -
我已经投票结束,因为错字。
-
@LasseV.Karlsen 我读到我可以在同一个
Invoke-Command块中执行 2 个命令,因此使用逗号。这不是错字:)
标签: powershell