据我所知,对于非企业站,没有功能可以查明系统是否已完全更新(仅通过 Windows 更新)。如果您有所需更新的完整列表,那么您可以检查该列表。
对于更新管理,您必须配置 Windows 10 Enterprise 和 System Center,然后您可以检查工作站是否安装了所需的更新。这样你就可以检查了。
要获取已安装补丁的列表和状态,您必须按照以下方式进行:
$Session = New-Object -ComObject "Microsoft.Update.Session"
$Searcher = $Session.CreateUpdateSearcher()
$historyCount = $Searcher.GetTotalHistoryCount()
$Searcher.QueryHistory(0, $historyCount) | Select-Object Title, Date,
@{name='ResultCode'; expression={switch($_.ResultCode){ 0 {'Not Started'}; 1 {'In Progress'};
2 {'Success'}; 3 {'Success with Errors'}; 4 {'Failed'}; 5 {'Aborted'}
}}}
您将其保存为 powershell 脚本,例如check_updates.ps1.
要从 javascript 运行它,您必须生成进程(从保存脚本的目录运行):
var spawn = require("child_process").spawn;
spawn("powershell.exe",[".\check_updates.ps1"]);
在这种产卵过程中您必须注意的是安全性。不要忘记分配正确的权限。
对于 Node.js,请检查以下答案:Execute Powershell script from Node.js。
对于 Node.js,您必须以不同的方式编写它,类似于以下内容(类似于上面发布的链接):
var spawn = require('child_process').spawn,
updates = spawn("powershell.exe",["C:\\path\\test\\check_updates.ps1"]);
updates.stdout.on('data', function (data) {
console.log('stdout: ' + data.toString());
});
updates.stderr.on('data', function (data) {
console.log('stderr: ' + data.toString());
});
updates.on('exit', function (code) {
console.log('child process exited with code ' + code.toString());
});
updates.stdin.end();
注意:有时失败的更新可能包含在累积更新中,因此很难找到它是否已安装。