Tyl*_*r N 6 windows windows-update powershell
我想自动获取Update Status(即下面屏幕截图中的Update Status句子)。You're up to date
我发现如何Last checked使用以下命令在 PowerShell 中获取时间戳:
$(New-Object -ComObject Microsoft.Update.AutoUpdate).Results.LastSearchSuccessDate;
Run Code Online (Sandbox Code Playgroud)
然而,试图找到Update Status是完全无法实现的。我不确定状态本身是否存储在某处,或者设置应用程序是否根据可用更新的数量确定状态,但我还没有找到复制状态的解决方案。
有谁知道这是否可以实现?我不希望自动强制安装更新,我只需要获取状态。
状态通常是You're up to date或Updates available,但我相信还有其他状态,例如Update Failed。
编辑:以下代码似乎没有达到我的要求:
使用该Microsoft.Update.Session对象搜索已分配、未隐藏或已安装的软件更新。如果没有找到,则没有更新,否则有一些可用:
$updateInfoMsg = "Windows Update Status: `n";
$UpdateSession = New-Object -ComObject Microsoft.Update.Session;
$UpdateSearcher = $UpdateSession.CreateupdateSearcher();
$Updates = @($UpdateSearcher.Search("IsAssigned=1 and IsHidden=0 and IsInstalled=0 and Type='Software'").Updates);
$Found = ($Updates | Select-Object -Expand Title);
If ($Found -eq $Null) {
$updateInfoMsg += "Up to date";
} Else {
$Found = ($Updates | Select-Object -Expand Title) -Join "`n";
$updateInfoMsg += "Updates available:`n";
$updateInfoMsg += $Found;
}
$updateInfoMsg;
Run Code Online (Sandbox Code Playgroud)
为了在远程计算机上运行它,请使用Invoke-Command:
$server = "server";
<# Get Windows Update Info #>
$out += Invoke-Command -ComputerName $server -ScriptBlock {
$updateInfoMsg = "Windows Update Status: `n";
$UpdateSession = New-Object -ComObject Microsoft.Update.Session;
$UpdateSearcher = $UpdateSession.CreateupdateSearcher();
$Updates = @($UpdateSearcher.Search("IsAssigned=1 and IsHidden=0 and IsInstalled=0 and Type='Software'").Updates);
$Found = ($Updates | Select-Object -Expand Title);
If ($Found -eq $Null) {
$updateInfoMsg += "Up to date";
} Else {
$Found = ($Updates | Select-Object -Expand Title) -Join "`n";
$updateInfoMsg += "Updates available:`n";
$updateInfoMsg += $Found;
}
Return $updateInfoMsg;
}
$out;
Run Code Online (Sandbox Code Playgroud)
此外,如果您需要在不在同一域的远程服务器上运行此程序,请按照我的回答将其设置为受信任的主机
以下是脚本的输出示例:
电脑1
----------
Windows 更新状态:
最后检查: 01/26/2021 13:40:39
最新
计算机2
----------
Windows 更新状态:
最后检查: 01/26/2021 05:59:41
可用更新:
适用于 x64 的 Windows 10 版本 2004 的 .NET Framework 3.5 和 4.8 2020 年 10 累积更新 (KB4578968)
Windows 10 版本 20H2 的功能更新