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

时间:2014-01-08 00:15:08

标签: php cmd exec

我正在开发一个php脚本,试图在服务器上的给定计算机上获取该人的用户名。

这是使用
的代码     exec('wmic COMPUTERSYSTEM Get UserName', $user);
print_r($user);

当这种情况发生时,我总会回来Array( )

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:0)

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

请参阅此answer。但您可以使用shell_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);

但我建议记录用户,有一个来自sysinternals的工具,我曾经做过某些任务,比如远程执行进程,通过命令提示符列出有关系统的信息。

结帐并安装PSTools。然后你可以使用PsLoggedon.exe

答案 1 :(得分:0)

如果输出参数存在,

exec 总是返回一个数组

请参阅:http://www.php.net/manual/en/function.exec.php

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

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

shell_exec 手册:

http://www.php.net/manual/en/function.shell-exec.php

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

查找: http://us2.php.net/manual/en/features.safe-mode.functions.php

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

答案 2 :(得分:0)

您必须以这种方式指定数组:print_r($user[1]);

exec('wmic COMPUTERSYSTEM Get UserName', $user);
print_r($user[1]);