微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PHP Powershell命令

试图在PHP中运行以下命令来运行power shell命令…

以下作品:

$output = shell_exec(escapeshellcmd('powershell get-service | group-object'));

我无法像这样运行它:

$output = shell_exec('powershell get-service | group-object');

它不会通过管道字符

但如果我尝试运行:

$output = shell_exec(escapeshellcmd('powershell get-service | where-object {$_.status -eq "Running"}'));

我没有输出.

下列:

$cmd = escapeshellcmd('powershell get-service | where-object {$_.status -eq "Running"}');

收益:

powershell get-service ^| where-object ^{^$_.status -eq ^"Running^"^}

有关为什么会发生这种情况以及如何解决此问题的任何建议?

编辑:我也可以将其作为.ps1脚本运行,但我希望能够将$var传递给它.

虽然我没有任何PHP经验,但我会采取刺激措施.

我有一种感觉,正在发生的事情是你的管道字符被命令shell而不是PowerShell解释.例如,如果在cmd.exe命令提示符下运行以下命令:

dir /s | more

正如您在PowerShell中所期望的那样,第一个命令的输出通过管道传输到第二个命令的输入.

转义字符串只会让问题变得更糟,因为你正在改变字符串,以至于PowerShell不知道如何去除它.

尝试将原始PowerShell表达式包含在如下所示的引号中:

$output = shell_exec('powershell.exe -c "get-service | group-object"');

或者最好,看起来有一个exec()函数没有通过命令shell.这可能会更好.

$output = exec('powershell.exe -c get-service | group-object');

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐