2016-03-25 45 views
1

此網址或KB ID(KB3139852)沒有太大意義:https://support.microsoft.com/en-us/kb/3139852PowerShell或QuickfixEngineering問題?

但是,如果我們導航到URL,我們看到更多的是高層次的,什麼意思HF: 「MS16-034:說明適用於Windows內核模式驅動程序的安全更新:2016年3月8日「

Get-Hotfix -ComputerName $server | Select HotfixID, Caption, InstalledOn | Where { $_.InstalledOn -gt (Get-Date).AddDays(-4) } | sort InstalledOn 

即使我們用PowerShell中運行,只是Get-Hotfix,它不提供有關修復的意思的細節。

我想我可以讓PowerShell導航到Microsoft URL來提供我正在尋找的信息,但是我認爲它應該被標記爲QuickFixEngineering的一部分?或者,我是否以這種錯誤的方式去做?

謝謝!

回答

1

我不知道你的意思是「應該被標註爲QuickFixEngineering的一部分」,但如果你想檢索更新的標題,你可以用Invoke-WebRequest這樣做:

$ua = 'Googlebot/2.1 (+http://www.googlebot.com/bot.html)' 
$uri = 'https://support.microsoft.com/en-us/kb/3139852' 
$response = Invoke-WebRequest -Uri $uri -UserAgent $ua 
$title = $response.AllElements.Where({$_.tagName -eq 'title'}).innerText 

注意我不得不冒充一個爬蟲來讓這個工作,因爲默認情況下,微軟的頁面似乎使用客戶端的JavaScript來填充元素,並且沒有可用的信息來解析頁面。

+0

我喜歡你的方法..我想我可能需要做一些與我們的公司代理服務器有點不同的事情,但是你給了我一個推動我需要去做什麼的地方。謝謝! – Leptonator

1

有關PowerShell中Get-Hotfix cmdlet的有趣之處在於,它實際上只是從Win32_QuickFixEngineering中抽取出來的。所以是的,你認爲它應該被標記爲QFE,因爲它已經部分正確。

Get-Hotfix 

GWMI -Class Win32_QuickFixEngineering 

會給你同樣的結果。它將從cimv2 \ Win32_QuickFixEngineering返回數據集。

至於什麼可從WMI該下擴展部分,您有以下

Name    MemberType  Definition                  
----    ----------  ----------                  
PSComputerName  AliasProperty PSComputerName = __SERVER               
Caption    Property  string Caption {get;set;}               
CSName    Property  string CSName {get;set;}               
Description   Property  string Description {get;set;}              
FixComments   Property  string FixComments {get;set;}              
HotFixID   Property  string HotFixID {get;set;}              
InstallDate   Property  string InstallDate {get;set;}              
InstalledBy   Property  string InstalledBy {get;set;}              
Name    Property  string Name {get;set;}               
ServicePackInEffect Property  string ServicePackInEffect {get;set;}            
Status    Property  string Status {get;set;}               
__CLASS    Property  string __CLASS {get;set;}               
__DERIVATION  Property  string[] __DERIVATION {get;set;}             
__DYNASTY   Property  string __DYNASTY {get;set;}              
__GENUS    Property  int __GENUS {get;set;}               
__NAMESPACE   Property  string __NAMESPACE {get;set;}              
__PATH    Property  string __PATH {get;set;}               
__PROPERTY_COUNT Property  int __PROPERTY_COUNT {get;set;}             
__RELPATH   Property  string __RELPATH {get;set;}              
__SERVER   Property  string __SERVER {get;set;}              
__SUPERCLASS  Property  string __SUPERCLASS {get;set;}             
PSStatus   PropertySet PSStatus {__PATH, Status}               
ConvertFromDateTime ScriptMethod System.Object ConvertFromDateTime();            
ConvertToDateTime ScriptMethod System.Object ConvertToDateTime();            
InstalledOn   ScriptProperty System.Object InstalledOn {get=if ([environment]::osversion.version.build -ge ... 

哪個不給你,你找什麼(超出「說明」的詳細說明財產給你)

不幸的是,我不能在我的公司代理後面使用Invoke-WebRequest進行修改,因爲https://support.microsoft.com/en-us/kb/3139852需要一些額外的憑證和代理管道,但無濟於事,還有另一種方式來獲取您的信息。

來源:

https://blogs.technet.microsoft.com/heyscriptingguy/2011/08/22/use-powershell-to-easily-find-information-about-hotfixes/

得到它應該可以通過Win32_ReliabilityRecords類,然後快速破敗濾波基礎上,SOURCENAME。

$i = Get-WmiObject -Class Win32_ReliabilityRecords 
$i = $i | where { $_.sourcename -match 'Microsoft-Windows-WindowsUpdateClient' } 
$i.ProductName 

# I broke it down into multiple operations to 
# simplify for others 

它給你的東西像

Update for Microsoft Office 2010 (KB2965291) 32-Bit Edition 
Update for Microsoft Filter Pack 2.0 (KB2881026) 32-Bit Edition 
Update for Microsoft Visual Studio 2010 Tools for Office Runtime (KB3001652) 
Update for Microsoft Outlook 2010 (KB3015585) 32-Bit Edition 
Update for Microsoft Office 2010 (KB2956141) 32-Bit Edition 
Update for Microsoft Visio Viewer 2010 (KB2881021) 32-Bit Edition 
Update for Windows 7 for x64-based Systems (KB3006625) 

希望這有助於。