2

我编写了一个可以从 powershell 运行的 powershell 脚本,如下所示:

PS C:> S:\MyScript.ps1 -a "select thing from table where name like 'name'"

我已将其存储在共享驱动器 (S:) 上,我无法从 powershell 或 cmd.exe 以这种形式运行我的 powershell 脚本:

PS C:> powershell S:\MyScript.ps1 -a "select thing from table where name like 'name'"
C:\> powershell S:\MyScript.ps1 -a "select thing from table where name like 'name'"

我还尝试绕过执行策略运行它:

C:\> powershell -executionpolicy bypass -command S:\MyScript.ps1 -a "select thing from table where name like 'name'"

我还尝试使用完整的 UNC 路径(以上述所有形式)运行它:

C:\> powershell \\MyServer\path\to\MyScript.ps1 -a "select thing from table where name like 'name'"

显示输出的唯一形式是如果我使用不需要传递字符串的参数:

C:\> powershell S:\MyScript.ps1 -z

thing
-----
thing1
thing2
thing3

有人知道为什么是这样吗?有什么方法可以将字符串从 cmd.exe 传递给脚本?

4

2 回答 2

4

另请注意,powershell.exe 有一个参数-File可能比-command. 我不确定脚本参数,因为它们应该像尼克所说的那样分组在一个字符串中。只需尝试 Nicks 解决方案,如果这不起作用,请尝试使用-File参数而不是-command.

于 2013-01-18T22:09:02.420 回答
2

尝试像这样运行它:

powershell -executionpolicy bypass -command {S:\MyScript.ps1 -a "select thing from table where name like 'name'"}

cmd 所知道的是,您向它发送了S:\MyScript.ps1它不知道如何处理的命令,将其-a "select thing from table where name like 'name'" 包含在{ }其中应该将整个内容作为要运行的命令。如果仍然导致问题,请尝试以下操作:

powershell -executionpolicy bypass -command " &{S:\MyScript.ps1 -a "select thing from table where name like 'name'"}"
于 2013-01-18T21:39:41.230 回答