如何使用php执行两个Powershell命令?

时间:2019-04-19 09:36:39

标签: php powershell

当我执行命令时,它显示未定义错误$sessionId,而当我定义$sessionId ='';时显示错误:

  

未定义变量$ _

虽然此命令可以在Powershell中完美运行。 请引导我。

shell_exec("C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe -ExecutionPolicy Bypass -NoProfile -InputFormat none -command $sessionId = ((quser /server:DC | Where-Object { $_ -match $userName }) -split ' +')[2]< NUL");

1 个答案:

答案 0 :(得分:0)

注意,我无法使您的Powershell代码段正常工作。当我运行它时,外壳挂在少于“ NUL”的代码段(< NUL)上。

Powershell和PHP支持在双引号字符串中进行字符串插值。通过shell_exec调用,我认为我看到的变量(例如$sessionId$userName$_)是内插的PHP变量,因此未定义错误。我不确定那是否就是您想要的。

您似乎正在尝试从用户名获取会话标识符。您可能想尝试类似...

$machineName = 'myComputer';
$userName = 'me';
$command = sprintf("quser /server:%s | findstr %s", $machineName, $userName);
$session = shell_exec($command);
$session_id = preg_split('/ +/', $session, 0)[3];
print($session_id);

我正在使用sprintf()生成shell命令,因为其插值安全。而且,在此示例中,我仅使用shell返回用户会话。我正在用PHP做其他事情。最后,我将Powershell排除在外。我喜欢Powershell,但这只会使事情变得更复杂。