Насколько мне известно, нет функции, чтобы узнать, полностью ли обновлена система (только через windows update) для станций не-предприятия. Если у вас будет полный список необходимых обновлений, вы можете проверить его по списку.
Для управления обновлениями необходимо настроить 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 проверьте этот ответ: Выполните скрипт Powershell из 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();
Примечание: Иногда неудачное обновление может быть включено в накопительные обновления, поэтому может быть сложно найти если он был установлен.