PHP Powershell命令
发布时间:2020-12-13 17:54:21 所属栏目:PHP教程 来源:网络整理
导读:试图在php中运行以下命令来运行power shell命令… 以下作品: $output = shell_exec(escapeshellcmd('powershell get-service | group-object')); 我无法像这样运行它: $output = shell_exec('powershell get-service | group-object'); 它不会通过管道字符
试图在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'); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |