php 读取windows 的系统版本,硬盘,内存,网卡,数据流量等

<?php
header("Content-type: text/html; charset=utf-8");
echo "<pre>\r\n\r\n";

# 系统名称、版本和类型
$out = '';
$info = exec('wmic os get Caption,Version,OSArchitecture',$out,$status);
$osinfo_array = explode('  ',$out[1]);
$osinfo = array_values(array_filter($osinfo_array));
echo "系统名称: " . $osinfo[0] ."\r\n系统版本: " . $osinfo[2] ."\r\n系统类型: " . $osinfo[1] ."\r\n\r\n";

# 系统配置
$out = '';
$info = exec('wmic os get producttype',$out,$status);   #返回 3 是server ,返回其它的是 workstation
if($out[1] == 3) $osconfig = "Server";
else $osconfig = "Workstatio";
echo "系统配置: " . $osconfig . "\r\n\r\n";

# 已运行时长
$out = '';
$info = exec('wmic os get lastBootUpTime,LocalDateTime',$out,$status);
$datetime_array = explode('.',$out[1]);
$dt_array = explode(' ',$datetime_array[1]);
$localtime = substr($datetime_array[1],-14);
$boottime = $datetime_array[0];
$uptime = strtotime($localtime) - strtotime($datetime_array[0]);

$day=floor(($uptime)/86400);
$hour=floor(($uptime)%86400/3600);
$minute=floor(($uptime)%86400/60);
$second=floor(($uptime)%86400%60);
echo "已运行: ".$day."天".$hour."小时".$minute."分钟".$second."秒\r\n\r\n";

# 硬盘用量
$out = '';
$info = exec('wmic logicaldisk get FreeSpace,size /format:list',$out,$status);
$hd = '';
foreach($out as $vaule){
	$hd .= $vaule . ' ';;
}
$hd_array = explode('   ', trim($hd));
$key = 'CDEFGHIJKLMNOPQRSTUVWXYZ';
foreach($hd_array as $k => $v){
	$s_array = explode('Size=', $v);
	$fs_array = explode('FreeSpace=', $s_array[0]);
	$size = round(trim($s_array[1])/(1024*1024*1024), 1);
	$freespace = round(trim($fs_array[1])/(1024*1024*1024), 1);
	$drive = $key[$k];
	echo $drive . "盘,\r\n已用空间: " . ($size - $freespace) . "GB/" . $size . "GB\r\n可用空间: " . $freespace . "GB\r\n\r\n";
}

# 物理内存
$out = '';
$info = exec('wmic os get TotalVisibleMemorySize,FreePhysicalMemory',$out,$status);
# 多个空格转为一个空格
$phymem = preg_replace ( "/\s(?=\s)/","\\1",$out[1]);
$phymem_array = explode(' ',$phymem);
//print_r($phymem_array);
$freephymem = ceil($phymem_array[0]/1024);
$totalphymem = ceil($phymem_array[1]/1024);
echo "已用物理内存: ". ($totalphymem - $freephymem) ."MB/". $totalphymem . "MB\r\n空闲物理内存: " . $freephymem . "MB\r\n\r\n";

# 虚拟内存
$out = '';
$info = exec('wmic os get SizeStoredInPagingFiles,FreeSpaceInPagingFiles',$out,$status);
$pagemem = preg_replace ( "/\s(?=\s)/","\\1",$out[1]);
$pagemem_array = explode(' ',$pagemem);
$freepagemem = ceil($pagemem_array[0]/1024);
$totalpagemem = ceil($pagemem_array[1]/1024);
echo "已用虚拟内存: ". ($totalpagemem - $freepagemem) ."MB/". $totalpagemem . "MB\r\n空闲虚拟内存: " . $freepagemem . "MB\r\n\r\n";

# 网卡名称
$out = '';
$info = exec('wmic nic list brief',$out,$status);
$nic_array = explode('  ', $out[2], 2);
$nic = $nic_array[0];
echo "当前网卡名称: " . $nic . "\r\n\r\n";

# 网卡流量,最初计量为字节
$out = '';
$info = exec('netstat -e',$out,$status);
$out_array = array();
foreach ($out as $key => $value) {
    $out_array[$key] = mb_convert_encoding ($value, 'utf-8', 'GBK');
}
$net = preg_replace ( "/\s(?=\s)/","\\1",$out_array[4]);
$net_array = explode(' ',$net);
echo "当前数据流量\r\n已接收: " .round($net_array[1]/(1024*1024), 3) . "MB\r\n已发送: " . round($net_array[2]/(1024*1024), 3) . "MB\r\n\r\n";

//$out = '';
//$info = exec('wmic os get /all  /format:list',$out,$status);
//print_r($out);

# 电脑信息
//$out = '';
//$info = exec('systeminfo',$out,$status);
//print_r($out);

//$info = exec('ipconfig',$out,$status);
//print_r($out);
//$out = '';

# 执行批处理,需要绝对路径
//$info = exec('C:/Users/Administrator/Downloads/www/mem.bat',$out,$status);
//print_r($out);

//$out = '';
//$info = exec('net statistics workstation | find "Statistics since 统计数据开始于"',$out,$status);
//$boottime = preg_replace ( "/\s(?=\s)/","\\1",$out[0]);
//$boottime_array = explode(' ',$boottime,2);
//echo $boottime_array[1];

php 读取windows 的系统版本,硬盘,内存,网卡,数据流量等的更多相关文章

  1. 命令查询windows&Linux系统版本信息

    Linux 查询系统名字输入"cat /proc/version",说明正在运行的内核版本uname -rwindows 查询系统名字win+r -> winversyste ...

  2. C#获取电脑型号、系统版本、内存大小、硬盘大小、CPU信息

    摘要 有时需要获取电脑的相关信息.这时可以通过调用windows api的方式,进行获取. 方法 可以通过在powershell中 通过下面的命令进行查询,然后可以通过c#调用获取需要的信息. gwm ...

  3. Windows系统版本判定那些事儿

    v:* { } o:* { } w:* { } .shape { }p.MsoNormal,li.MsoNormal,div.MsoNormal { margin: 0cm; margin-botto ...

  4. Windows系统版本判定那些事儿[转]

    Windows系统版本判定那些事儿 转自CSDN,原文链接,我比较不要脸, 全部给复制过来了 前言 本文并不是讨论Windows操作系统的版本来历和特点,也不是讨论为什么没有Win9,而是从程序员角度 ...

  5. Windows系统版本判定那些事儿(有图,各种情况,很清楚)

    前言 本文并不是讨论Windows操作系统的版本来历和特点,也不是讨论为什么没有Win9,而是从程序员角度讨论下Windows获取系统版本的方法和遇到的一些问题.在Win8和Win10出来之后,在获取 ...

  6. windows平台下 c++获取 系统版本 网卡 内存 CPU 硬盘 显卡信息<转>

    GetsysInfo.h: #ifndef _H_GETSYSINFO #define _H_GETSYSINFO #pragma once #include <afxtempl.h> c ...

  7. Windows 8/8.1系统下硬盘占用率100%的问题解决思路汇总

    家庭组 2.关闭虚拟内存 3.关闭Windows 8快速开机功能 4.服务进程superfetch 5.系统下软件排除 操作步骤: 1.Windows 8系统的家庭组方便多人不用存储设备就能在局域网中 ...

  8. C/C++获取Linux系统CPU和内存及硬盘使用情况

    需求分析: 不使用Top  df  free 等命令,利用C/C++获取Linux系统CPU和内存及硬盘使用情况 实现: //通过获取/proc/stat (CPU)和/proc/meminfo(内存 ...

  9. 烂泥:KVM虚拟机windows系统增加硬盘

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 前一篇文章介绍了有关linux系统添加硬盘的方法,这次我们来介绍有关windows系统添加的相关步骤. 其实linux和windows添加的硬盘的方法都 ...

随机推荐

  1. 服务器搭建域控与SQL Server的AlwaysOn环境过程(一) 搭建域控服务器

    0 准备阶段 1. Windows Server 服务器 3台(其中域控服务器配置可降低一个水准,目前博主试用的是:域控服务器--2核4G 数据库服务器(节点)--4核8G ) 2. SQL Serv ...

  2. 在yii2.0中封装一个生成验证码的控制器

    frontend目录下/封装的验证码类: <?php namespace frontend\controllers; use yii\base\Controller; class CapathC ...

  3. 微软的鼠标 Microsoft mouse

    微软是做软件出身的厂商, 所以微软开发的软件质量毋庸置疑,Windows操作系统还有诸如Office的办公软件拥有庞大的用户群. 微软家的Visual Studio也被号称宇宙最强IDE,我个人也每天 ...

  4. 51nod 1526 分配笔名(Trie树+贪心)

    建出Trie树然后求出一个点子树中有多少笔名和真名.然后贪心匹配即可. #include<iostream> #include<cstring> #include<cst ...

  5. [CTSC2016]单调上升路径

    题目:UOJ#201. 题目大意:给定n个点(n是偶数)的完全图,现在要你给每条边确定一个权值(互不相等),使得最长的单调上升路径最短.现在要你输出边的权值. 一条路径被称为单调上升的,如果沿着它走时 ...

  6. maven使用技巧

    转:MAVEN常用命令 Maven库: http://repo2.maven.org/maven2/ Maven依赖查询: http://mvnrepository.com/ Maven常用命令: 1 ...

  7. C语言程序设计:现代方法阅读笔记

    第二十六章 atexit函数允许用户“注册”在程序终止时要调用的函数:atexit(func); 在程序终止后,func函数会被自动调用 clock()函数可以计算程序运行时间 time函数返回当前的 ...

  8. linux查找某个命令属于哪个rpm包

    我们拿pip命令来举例 方法一: 确认命令的路径 # which pip      /usr/bin/pip 用yum命令查找pip属于哪个rpm包 # yum whatprovides /usr/b ...

  9. 【BZOJ 1483】[HNOI2009]梦幻布丁

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 链表,启发式合并. 把x变成y,和y全都变成x. 不论是前者还是后者.连续段的个数都是相同的,不影响结果. 那么我们把x,y中出现次 ...

  10. 【图灵杯 A】谷神的赌博游戏

    [题目链接]:http://oj.acmclub.cn/problem.php?cid=1164&pid=0 [题意] [题解] 把每个数字都%3处理; 会发现最后1的个数为n+1 2和0的个 ...