用一个窗口列出所有的安装过的更新补丁,COM可以做到。不幸的是,它用起来不够爽,也不支持远程。
现在我们则例有一个Get-WindowsUpdate的函数,它能获取到本地已安装的默认更新,你也可以从指定电脑或同时从多个远程电脑获取这些更新数据。
通过Powershell的远程访问电脑,正常操作的前提是它的远程是被已打开的(例如WINDOWS SERVER2012默认打开PS远程管理),你只需要本地管理员权限在对方电脑上。
function Get-WindowsUpdate
{
[CmdletBinding()]
param
(
[String[]]
$ComputerName,
$Title = '*',
$Description = '*',
$Operation = '*'
)
$code = {
param
(
$Title,
$Description
)
$Type = @{
name='Operation'
expression={
switch($_.operation)
{
1 {'Installed'}
2 {'Uninstalled'}
3 {'Other'}
}
}
}
$Session = New-Object -ComObject 'Microsoft.Update.Session'
$Searcher = $Session.CreateUpdateSearcher()
$historyCount = $Searcher.GetTotalHistoryCount()
$Searcher.QueryHistory(0, $historyCount) |
Select-Object Title, Description, Date, $Type |
Where-Object { $_.Title -like $Title } |
Where-Object { $_.Description -like $Description } |
Where-Object { $_.Operation -like $Operation }
}
$null = $PSBoundParameters.Remove('Title')
$null = $PSBoundParameters.Remove('Description')
$null = $PSBoundParameters.Remove('Operation')
Invoke-Command -ScriptBlock $code @PSBoundParameters -ArgumentList $Title, $Description
}
这个函数也支持筛选功能,如此我们只想得到已安装的OFFICE更新,只需这样做:
本文链接: https://www.pstips.net/checking-windows-updates.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!

想问问这个和get-hotfix有什么区别啊?
我自己的机器上hotfix的个数是:21,windows update的个数是62。windows update 包含了hotfix。系统的常规更新算是update,针对客户或者黑客报的一些bug做出的修复为hotfix。
WIN8系统不好用,想撤回WIN7!WIN7有办法用PS4.0吗?
win7 打了sp1补丁以后,是可以安装ps4.0的。
Windows6.1-KB2819745-x64-MultiPkg.msuwin7下的内建Module少多啦!
同感,win7下的ps4.0是少了很多module。