風雲 (ID: 3)
头衔:论坛版主
等级:大天使
积分:1570
发帖:70 篇
来自:保密
注册:2022/3/30 15:28:53
造访:2024/11/23 19:18:13
发帖:70 篇
来自:保密
注册:2022/3/30 15:28:53
造访:2024/11/23 19:18:13
[ 第 1 楼 ]
回复
Gitee 源码参考 或者 查看演示
这里以 JScript 的 ASP/ASPX 代码为例,以便更好的理解 WMI 管理 Hyper-V 的基本流程。
提示1:ASP.NET 需要将 IIS AppPool\DefaultAppPool(ASP 也可以用 IUSR)添加到 Hyper-V Administrators 组才有权限执行操作。
提示2:操作账号需要对配置中出现的文件和目录有读写权限,否则异步操作(code: 4096)过程中有可能会出错。
// 定义 wmi 方法
function wmi() { return !wmi.ins ? wmi.ins = GetObject("winmgmts://localhost/root/virtualization/v2") : wmi.ins; }
// wmi 数组转 js 数组
function wmiToArr(rs, fields) {
var cols = fields.split(/[\,\s]+/);
var enm = new Enumerator(rs), arr = new Array;
while(!enm.atEnd()) {
var x = enm.item(), o = new Object;
for(var i = 0; i < cols.length; i++) o[cols[i]] = x[cols[i]];
arr.push(o); enm.moveNext();
}
sys.wmiRs = rs;
return arr;
}
// 时间格式解析
function parseTime(str) { return str.replace(/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2}).*/, "$1-$2-$3 $4:$5:$6"); }
// 第一个示例,检查服务状态
,ServiceStatusDoc: [ "服务运行状态" ]
,servicestatus: function() {
var rs = wmi().instancesOf("Msvm_VirtualSystemManagementService");
if(!rs.Count) return { err: "未找到服务" };
rs = wmiToArr(rs, "Caption, DefineSystem, Description, StatusDescriptions, InstallDate")[0];
rs.InstallDate = parseTime(rs.InstallDate);
rs.StatusDescriptions = rs.StatusDescriptions.getItem(0); // ASP
// rs.StatusDescriptions = rs.StatusDescriptions[0]; // ASPX
return rs;
}
这里以 JScript 的 ASP/ASPX 代码为例,以便更好的理解 WMI 管理 Hyper-V 的基本流程。
提示1:ASP.NET 需要将 IIS AppPool\DefaultAppPool(ASP 也可以用 IUSR)添加到 Hyper-V Administrators 组才有权限执行操作。
提示2:操作账号需要对配置中出现的文件和目录有读写权限,否则异步操作(code: 4096)过程中有可能会出错。
// 定义 wmi 方法
function wmi() { return !wmi.ins ? wmi.ins = GetObject("winmgmts://localhost/root/virtualization/v2") : wmi.ins; }
// wmi 数组转 js 数组
function wmiToArr(rs, fields) {
var cols = fields.split(/[\,\s]+/);
var enm = new Enumerator(rs), arr = new Array;
while(!enm.atEnd()) {
var x = enm.item(), o = new Object;
for(var i = 0; i < cols.length; i++) o[cols[i]] = x[cols[i]];
arr.push(o); enm.moveNext();
}
sys.wmiRs = rs;
return arr;
}
// 时间格式解析
function parseTime(str) { return str.replace(/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2}).*/, "$1-$2-$3 $4:$5:$6"); }
// 第一个示例,检查服务状态
,ServiceStatusDoc: [ "服务运行状态" ]
,servicestatus: function() {
var rs = wmi().instancesOf("Msvm_VirtualSystemManagementService");
if(!rs.Count) return { err: "未找到服务" };
rs = wmiToArr(rs, "Caption, DefineSystem, Description, StatusDescriptions, InstallDate")[0];
rs.InstallDate = parseTime(rs.InstallDate);
rs.StatusDescriptions = rs.StatusDescriptions.getItem(0); // ASP
// rs.StatusDescriptions = rs.StatusDescriptions[0]; // ASPX
return rs;
}
2022/6/14 0:03:53
IP:已设置保密