用于在安装windows更新后检查重新启动状态的Powershell
这是我用来搜索WSUS安装的Windows更新的代码,我想再添加一列,说明重新启动挂起/完成的状态。有开关吗用于在安装windows更新后检查重新启动状态的Powershell,powershell,windows-update,Powershell,Windows Update,这是我用来搜索WSUS安装的Windows更新的代码,我想再添加一列,说明重新启动挂起/完成的状态。有开关吗 $Session = New-Object -ComObject "Microsoft.Update.Session" $Searcher = $Session.CreateUpdateSearcher() $historyCount = $Searcher.GetTotalHistoryCount() $Searcher.QueryHistory(0, $historyCount
$Session = New-Object -ComObject "Microsoft.Update.Session"
$Searcher = $Session.CreateUpdateSearcher()
$historyCount = $Searcher.GetTotalHistoryCount()
$Searcher.QueryHistory(0, $historyCount) | Select-Object Date,
@{name="Operation"; expression={switch($_.operation){
1 {"Installation"}; 2 {"Uninstallation"}; 3 {"Other"}}}},
@{name="Status"; expression={switch($_.resultcode){
1 {"In Progress"}; 2 {"Succeeded"}; 3 {"Succeeded With Errors"};
4 {"Failed"}; 5 {"Aborted"}
}}}, Title | Out-GridView
简单地看一下COM对象属性和方法并没有说明这方面的任何内容。但这并不能保证客户会做出怎样的反应 可能还有其他方法,但如果您想确定当前状态,一个建议是查看注册表 :
HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequested
因此,您只需检查该键中是否有任何值,就WU而言,就可以了解其挂起状态
$pendingRebootKey = "HKLM:SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired"
$results = (Get-Item $pendingRebootKey -ErrorAction SilentlyContinue).Property
if($results){
# Reboot is pending
}
使用-ErrorAction
很有用,因为根据文章:
请注意
当机器按正常方式重新启动时,RebootRequired密钥将自动删除
易失性(仅保存在内存中)
这可能会隐藏其他潜在问题,因此您可能需要将逻辑更改为try/catch,并查看诸如
ItemNotFoundException
之类的特定错误(如果存在问题)。我认为我们没有用于检查重新启动状态的特定开关。我想我们必须明确地检查一下,我怎样才能将它作为一个新列添加到我当前的输出中?新对象?这是在主机上执行的,对吗?您可以更新当前的输出列表。虽然您可以将更新连接到注册表数据,但我不确定如何以令人满意的方式添加这些数据。您可以添加另一个计算属性,但它是正在运行的计算机的属性,而不是您正在查询的更新。