stevebauman / wmi
一个使用PHP和COM操作WMI的包。
此包的官方仓库似乎已不存在,因此该包已被冻结。
Requires
- php: >=5.4.0
Requires (Dev)
- mockery/mockery: 0.9.*
- phpunit/phpunit: 4.7.*
This package is auto-updated.
Last update: 2024-04-14 00:44:02 UTC
README
要求
要使用WMI,您的服务器必须满足以下要求
- Windows操作系统
- PHP 5.4或更高版本
- PHP COM扩展已启用
安装
将WMI插入到您的composer.json
"stevebauman/wmi": "1.1.*"
现在运行composer update。
设置完成!
使用方法
连接
要使用WMI,您必须创建一个新的WMI实例。要与当前计算机交互,只需创建一个WMI实例
use Stevebauman\Wmi\Wmi; $wmi = new Wmi();
要与网络上的PC交互,您需要输入主机名,如果需要,还要输入用户名和密码
$wmi = new Wmi($host = 'GUEST-PC', $username = 'guest', $password = 'password');
现在我们可以连接到它,但您需要指定要连接的命名空间
$connection = $wmi->connect('root\\cimv2');
connect()方法将在连接成功时返回一个Stevebauman\Wmi\Connection实例
if($connection = $wmi->connect('root\\cimv2')) { echo "Cool! We're connected."; $query = $connection->newQuery(); } else { echo "Uh oh, looks like we couldn't connect."; }
查询
注意:在我们开始查询之前,您应该知道,除了任何查询方法中的引号之外,没有其他值会被转义。此包不是用来处理用户输入的,您不应允许用户查询您的网络上的计算机/服务器。
这是因为WMI不支持查询中的参数化。
原始查询
一旦您连接到计算机,您就可以使用它的连接来执行查询。要执行原始查询,请使用
if($connection = $wmi->connect('root\\cimv2')) { $results = $connection->query('SELECT * FROM Win32_LogicalDisk'); foreach($results as $disk) { $disk->Size; } }
查询构建器
WMI附带一个WQL查询构建器,因此您可以轻松构建语句。要创建一个新的Builder,请使用WMI连接实例上的newQuery()方法,如下所示
$query = $wmi->getConnection()->newQuery();
一旦您有了查询,我们就可以开始构建
// Executes the query "select * from Win32_LogicalDisk where Size >= '150000'" $results = $query->from('Win32_LogicalDisk') ->where('Size', '>=', '150000') ->get();
选择
select方法接受一个字符串或一个数组,可以将选择插入到当前查询中。例如
// Select All $query->select('*'); // Select Specific (array) $query->select(['Name', 'Disk', 'Size']); // Select Specific (multiple args) $query->select('Name', 'Disk', 'Size'); // Select Specific (string) $query->select('Name, Disk, Size');
如果您不使用select方法,也没关系。Builder会假设您是想选择所有列,因此您可以执行
$query->from('Win32_LogicalDisk')->get(); // Query Executed select * from Win32_LogicalDisk
从
from方法接受一个字符串,它是WMI类的名称。例如
$query->from('Win32_DiskDrive')->get(); // $query->from('Win32_BIOS')->get();
有关WMI类的更多信息,请访问:https://msdn.microsoft.com/en-us/library/aa394132(v=vs.85).aspx
where
where方法接受一个字段、运算符和值。这对于检索满足特定要求的特定数据很有用。
方法
$query->where($field, $operator, $value);
示例
$query->where('Size', '>', 15000)->from('Win32_LogicalDisk')->get();
字段参数必须是在from类中的一个属性,否则您将不会收到任何结果。