管道符号和变量的PHP powershell cmdlet问题

时间:2015-11-10 16:37:01

标签: php powershell pipe shell-exec cmdlet

我找到了这个问题的答案,发现了这篇文章here

但是,我在插入一些php变量时无法得到建议工作,我传递的命令是:

 $command = "powershell -command get-aduser -Filter {(givenname -Like '*".$username[0]."*') -And (surname -Like '*".$username[1]."*')} -Properties samaccountname | format-table samaccountname 2>&1";

我得到错误 string'' format-table'不被视为内部或外部命令, 可操作程序或批处理文件。 ' (长度= 101)

如何让它工作以便它使用变量AND让我将它传递给表?

1 个答案:

答案 0 :(得分:3)

要测试它,您应该将该命令粘贴到Windows命令提示符中。

管道|在它甚至到达PowerShell之前由命令解析器解释,因此管道被视为单独的可执行文件或要运行的命令之后无论如何。

您可以尝试引用整个命令字符串,但是您可能还需要经历痛苦以逃避任何嵌入的双引号"

但是最简单的事情就是逃离管道。 windows命令提示符的转义字符是插入符号^

$command = "powershell -command get-aduser -Filter {(givenname -Like '*".$username[0]."*') -And (surname -Like '*".$username[1]."*')} -Properties samaccountname ^| format-table samaccountname 2>&1";