为什么Php exec函数返回数组()?

为什么Php exec函数返回数组()?,php,cmd,exec,Php,Cmd,Exec,我正在编写一个php脚本,试图获取服务器上给定计算机上的用户的用户名 以下是我使用的代码 exec('wmic COMPUTERSYSTEM Get UserName',$user) 打印(用户) 每次运行时,我总是返回Array() 非常感谢您的帮助。您不能使用exec返回命令的任何输出 请参见此图。但是您可以使用返回命令的输出 您可以拥有一个计算机阵列: $computer = array('comp1', 'comp2'); $comp1 = array(); foreach($com

我正在编写一个php脚本,试图获取服务器上给定计算机上的用户的用户名

以下是我使用的代码
exec('wmic COMPUTERSYSTEM Get UserName',$user)
打印(用户)

每次运行时,我总是返回
Array()


非常感谢您的帮助。

您不能使用exec返回命令的任何输出

请参见此图。但是您可以使用返回命令的输出

您可以拥有一个计算机阵列:

$computer = array('comp1', 'comp2');
$comp1 =  array();

foreach($computer as $username)
{
    $comp1 = shell_exec("wmic /node: ". $username ." computersystem Get UserName");
    print_r($comp1);
}
但如果只有一个:

$user = shell_exec('wmic /node: <yourcomputername> COMPUTERSYSTEM Get UserName');
print_r($user);
$user=shell_exec('wmic/node:COMPUTERSYSTEM Get UserName');
打印(用户);
但我建议,为了获得登录用户,我使用sysinternals中的一个工具来执行某些任务,比如远程执行流程,通过命令提示符列出有关系统的信息


签出并安装。然后,如果存在输出参数,则可以使用PsLoggedon.exe始终返回数组

见:

如果代码只返回一个用户,请尝试以下操作:

$user = shell_exec('wmic COMPUTERSYSTEM Get UserName');
echo $user;
shell_exec手册:

如果PHP处于安全模式,它可能会被禁用。

看:


您可以使用phpinfo()函数检查服务器的PHP设置。

您必须这样指定数组:
print\r($user[1])


那么我应该如何打印这个呢?我是不是应该回应一下shell_exec?或者有什么方法我应该这样做吗?你有一个$user的数组,你想让它自动化吗?你能详细说明一下你所说的自动化是什么意思吗?你是要只使用一个用户运行命令,还是你有一个存储在数组中的用户列表,并希望获得他们的用户名?我有一个不同计算机的列表,我正在检查是否有人登录。我相信一次只能登录一个人。嗯,当我尝试时,我没有得到任何输出,我会继续尝试:)我应该把这个命令的完整路径放在()中吗?如果是这样,那会是什么样子?刚刚检查过,它说安全模式关闭了。
exec('wmic COMPUTERSYSTEM Get UserName', $user);
print_r($user[1]);