一个使用PHP和COM操作WMI的包。

此包的官方仓库似乎已不存在,因此该包已被冻结。

v1.1.2 2015-10-07 18:33 UTC

This package is auto-updated.

Last update: 2024-04-14 00:44:02 UTC


README

Travis CI Scrutinizer Code Quality Total Downloads Latest Stable Version

要求

要使用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类中的一个属性,否则您将不会收到任何结果。