【问题标题】:PHP powershell cmdlet issue with pipe symbol and variablesPHP powershell cmdlet 问题与管道符号和变量
【发布时间】:2015-11-10 16:37:00
【问题描述】:

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

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

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

我得到错误 字符串 ''format-table' 未被识别为内部或外部命令, 可运行的程序或批处理文件。 ' (长度=101)

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

【问题讨论】:

    标签: php powershell pipe shell-exec cmdlet


    【解决方案1】:

    要对此进行测试,您只需将该命令粘贴到 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";
    

    【讨论】:

    • 解决了!非常感谢,我整个上午都在搞砸它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-22
    • 1970-01-01
    • 2017-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多