WSH(JScript)用のWMI(Windows Management Instrumentation)ライブラリです。
機能概要は、以下の通りです。
- wmiObjectの取得
- wmiObjectをObject化して取得
サンプル
<?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
/*! * 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] 初版 |