我很好奇是否有一个 .Net API 可以让我确定哪些更新正在等待“Windows Update”
如果做不到这一点,是否有可以获取它的 windows powershell 命令?
我很好奇是否有一个 .Net API 可以让我确定哪些更新正在等待“Windows Update”
如果做不到这一点,是否有可以获取它的 windows powershell 命令?
这是一个 VBScript,您可以使用它来安装更新
http://msdn.microsoft.com/en-us/library/aa387102(VS.85).aspx
您可以在 PowerShell 中非常轻松地使用 COM 对象。鉴于上述 VBScript 示例,您也可以在 PS 中使用该对象
PS C:\> $updateSession = new-object -com Microsoft.update.Session
PS C:\> $updateSession | get-member
TypeName: System.__ComObject#{918efd1e-b5d8-4c90-8540-aeb9bdc56f9d}
Name MemberType Definition
---- ---------- ----------
CreateUpdateDownloader Method IUpdateDownloader CreateUpdateDownloader ()
CreateUpdateInstaller Method IUpdateInstaller CreateUpdateInstaller ()
CreateUpdateSearcher Method IUpdateSearcher CreateUpdateSearcher ()
CreateUpdateServiceManager Method IUpdateServiceManager2 CreateUpdateServiceManager ()
QueryHistory Method IUpdateHistoryEntryCollection QueryHistory (string, int, int)
ClientApplicationID Property string ClientApplicationID () {get} {set}
ReadOnly Property bool ReadOnly () {get}
UserLocale Property uint UserLocale () {get} {set}
WebProxy Property IWebProxy WebProxy () {get} {set}
PS C:\> $searcher = $updateSession.CreateUpdateSearcher()
PS C:\> $searcher | gm
TypeName: System.__ComObject#{04c6895d-eaf2-4034-97f3-311de9be413a}
Name MemberType Definition
---- ---------- ----------
BeginSearch Method ISearchJob BeginSearch (string, IUnknown, Variant)
EndSearch Method ISearchResult EndSearch (ISearchJob)
EscapeString Method string EscapeString (string)
GetTotalHistoryCount Method int GetTotalHistoryCount ()
QueryHistory Method IUpdateHistoryEntryCollection QueryHistory (int, int)
Search Method ISearchResult Search (string)
CanAutomaticallyUpgradeService Property bool CanAutomaticallyUpgradeService () {get} {set}
ClientApplicationID Property string ClientApplicationID () {get} {set}
IgnoreDownloadPriority Property bool IgnoreDownloadPriority () {get} {set}
IncludePotentiallySupersededUpdates Property bool IncludePotentiallySupersededUpdates () {get} {set}
Online Property bool Online () {get} {set}
SearchScope Property SearchScope SearchScope () {get} {set}
ServerSelection Property ServerSelection ServerSelection () {get} {set}
ServiceID Property string ServiceID () {get} {set}
PS C:\>
您可以继续使用 get-member 来找出所有不同的选项,并基本上将该 VBScript 转换为 PowerShell 并对其进行调整以执行您需要执行的任何操作。
安迪
Windows 更新代理 API 可能是您正在寻找的:
http://msdn.microsoft.com/en-us/library/aa387287%28VS.85%29.aspx
它是一个 COM 接口(不是 .NET 本机接口),但您可以从应用程序中使用它。
这一点都不是那么简单,但您只需引用 COM/WUAPI 2.0 类型库,VS 就会为您创建一个托管包装器,并将其作为 WuApiLib.dll 复制到构建目录。
小心内存泄漏。