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


PHP powershell cmdlet issue with pipe symbol and variables

我寻找这个问题的答案,在这里找到了这篇文章

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

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

我犯了错误字符串"格式表"未被识别为内部或外部命令,可操作程序或批处理文件。'(长度=101)

我如何让它工作,以便它使用变量,并让我将其管道传输到表?

要测试这一点,只需将该命令粘贴到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";