从文件夹&amp ;;安装Windows更新返回已安装或未安装的状态

时间:2011-06-21 12:43:03

标签: windows arrays powershell

我想要一个帮助验证从文件夹安装的更新的状态,这是下面的脚本。

# Specify the location of the *.msu files
$updatedir = "C:\install\hvpatches"
foreach ($msu in $msus)
{
    write-host "Installing update $msu ..."
    $fullname = $msu.fullname
    # Need to wrap in quotes as folder path may contain spaces
    $fullname = "`"" + $fullname + "`""

###

$files = Get-ChildItem $updatedir -Recurse
$msus = $files | ? {$_.extension -eq ".msu"}
    # Specify the command line parameters for wusa.exe
    $parameters = $fullname + " /quiet /norestart"
    # Start wusa.exe and pass in the parameters
    $install = [System.Diagnostics.Process]::Start( "wusa",$parameters )
    $install.WaitForExit()
    write-host "Finished installing $msu"
}

从上面的脚本安装Windows更新,我想要的是验证这些更新是否正确安装的某种方式,或者在安装失败时给出状态。

我希望我们的一些知识产权大师帮助我:)

谢谢, Vinith!

1 个答案:

答案 0 :(得分:0)

我不是PS大师,但前段时间我正在玩不同背景下的检查更新,所以也许我的建议会对你有用。

重点。试着调用我之前写下的这段代码:

$session = New-Object -ComObject Microsoft.Update.Session 
$searcher = $session.CreateUpdateSearcher() 
$result = $searcher.Search("IsInstalled=1 and Type='Software'" ) 
$result.Updates | get-member

过了一段时间(它有点慢)你会得到你可以查看的东西清单。我不知道您正在安装的这些更新有哪些信息,但这里有一些可能有用,例如TitleKBArticleIDs号码(希望包含一些相关信息)。然后用你想要的东西替换最后一行,例如

$result.Updates | select Title

并与最近安装的更新数据进行比较。

很抱歉,某些不完整的答案 - 我当前的Windows框有一些问题,上面的代码不能像我记得的那样工作。不要犹豫,指出它是否完全错误,错误的人性化! ;)