WSH(JScript)用WMIライブラリ:WMIUtility.js
WSH(JScript)用のWMI(Windows Management Instrumentation)ライブラリです。
機能概要は、以下の通りです。
- wmiObjectの取得
- wmiObjectをObject化して取得
サンプル
wmi.wsf<?xml version="1.0" encoding="UTF-16" standalone="yes" ?>
<package>
<job>
<?job error="false" debug="true" ?>
<script language="JavaScript" src="../common/WMIUtility.js"/>
<script language="JavaScript"><![CDATA[
(function() {
"use strict";
function main() {
var stdout = [];
var props = WMIUtility.getProperties("SELECT * FROM Win32_Process");
for (var i=0; i<props.length; i++) {
stdout.push(props[i].Name + ': ' + props[i].ProcessId);
}
// プロセス名とプロセスIDを出力する
WScript.Echo(stdout.join('\n'));
WMIUtility.quit();
}
main();
})();
]]></script>
</job>
</package>
参考リンク
WMIUtility.js
GitHubで公開しました。最新版は、k08045kk/WSHLibraryから取得してください。
WMIUtility.js/*!
* WMIUtility.js v1
*
* Copyright (c) 2018 toshi
* Released under the MIT license.
* see https://opensource.org/licenses/MIT
*/
/**
* WSH(JScript)用WMIライブラリ
* WMI(Windows Management Instrumentation)
* @requires module:ActiveXObject("WbemScripting.SWbemLocator")
* @auther toshi(https://www.bugbugnow.net/)
* @license MIT License
* @version 1
*/
(function(global, factory) {
if (!global.WMIUtility) {
global.WMIUtility = factory();
}
})(this, function() {
"use strict";
var _this = void 0;
/**
* PrivateUnderscore.js
* @version 4
*/
{
function _isString(obj) {
return Object.prototype.toString.call(obj) === '[object String]';
};
function _isArray(obj) {
return Object.prototype.toString.call(obj) === '[object Array]';
};
}
/**
* コンストラクタ
*/
_this = function WMIUtility_constructor() {};
_this.locator = new ActiveXObject("WbemScripting.SWbemLocator");
_this.service = _this.locator.ConnectServer();
/**
* 終了化
* 終了化後、クラス内の変数/関数にアクセスしないこと。
*/
_this.quit = function WMIUtility_quit() {
_this.service = null;
_this.locator = null;
};
/**
* 選択
* 配列の最初の要素を返す。
* @param {string} query - クエリ
* @return {wmiObject} アイテム
*/
_this.select = function WMIUtility_select(query) {
var items = _this.selects(query);
return (items.length != 0)? items[0]: null;
};
/**
* 選択
* @param {string} query - クエリ
* @return {wmiObject[]} アイテム配列
*/
_this.selects = function WMIUtility_selects(query) {
var ret = [];
var set = _this.service.ExecQuery(query);
for (var e=new Enumerator(set); !e.atEnd(); e.moveNext()) {
ret.push(e.item());
}
set = null;
return ret;
};
/**
* プロパティ一覧
* @param {(string|wmiObject)} query - クエリ or アイテム
* @return {Object} アイテムプロパティのオブジェクト({Name: Value, ...})
*/
_this.getProperty = function WMIUtility_getProperty(query) {
var ret = null;
if (_isString(query)) { // クエリを処理する
var set = _this.service.ExecQuery(query);
for (var e=new Enumerator(set); !e.atEnd(); e.moveNext()) {
query = e.item();
break;
}
set = null;
}
if (query != null) { // アイテムを処理する
ret = {};
for (var e=new Enumerator(query.Properties_); !e.atEnd(); e.moveNext()) {
var item = e.item();
ret[item.Name] = item.Value;
}
}
return ret;
}
/**
* プロパティ一覧
* @param {(string|wmiObject[])} query - クエリ or アイテム配列
* @return {Object[]} アイテムプロパティのオブジェクト([{Name: Value, ...}, ...])
*/
_this.getProperties = function WMIUtility_getProperties(query) {
var ret = null;
if (_isString(query)) { // クエリを処理する
query = _this.selects(query);
}
if (_isArray(query)) { // アイテム配列を処理する
ret = [];
for (var i=0; i<query.length; i++) {
ret.push(_this.getProperty(query[i]));
}
}
return ret;
};
return _this;
});
変更履歴
更新日 | 内容 |
---|---|
2018/07/02 | v1 - add - 初版 |