我正在开发一个php脚本,试图在服务器上的给定计算机上获取该人的用户名。
这是使用
的代码
exec('wmic COMPUTERSYSTEM Get UserName', $user);
print_r($user);
当这种情况发生时,我总会回来Array( )
非常感谢任何帮助。
答案 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]);