簡體   English   中英

正在使用Powershell中的QueryHistory來查詢遠程計算機上的Windows更新

[英]Is using QueryHistory from powershell to query windows updates on remote machine possible

在有人思考之前,嘿這個問題很容易回答(=>是...)請繼續閱讀...

我知道,我們可以使用(例如)以下代碼從遠程計算機上獲取"Microsoft.Update.Session ”的實例

[activator]::CreateInstance([type]::GetTypeFromProgID("Microsoft.Update.Session",$ComputerName))

這適用於其他操作,例如搜索已安裝IsInstalled = 0更新。

為了獲得所有更新的完整列表(還有待處理的信息等),互聯網上有很多示例,即使在stackoverflow上也是如此

他們都寫來做以下事情

$Session = [activator]::CreateInstance([type]::GetTypeFromProgID("Microsoft.Update.Session",$ComputerName))
$Searcher = $Session.CreateUpdateSearcher()
$TotalUpdatesCount = $Searcher.GetTotalHistoryCount()
$TotalUpdates = $Searcher.QueryHistory(0, $TotalUpdatesCount)

似乎它正在工作,因為沒有錯誤....而且我們有一個不錯的(大)更新列表...

我的問題是, QueryHistory(int, int)返回的結果始終相同...不管我在CreateInstance(...GetTypeFromProgID(..., $ComputerName))部分輸入了什么$ComputerName

在所有提供示例的站點上, 沒有人提到這一點,我相信他們都在locally使用了該代碼locally因為在該范圍內,它返回的是正確的值...

在深入研究並閱讀了MSDN之后,我在https://msdn.microsoft.com/en-us/library/windows/desktop/bb394842(v=vs.85).aspx上找到了以下語句

Note that QueryHistory supports per-machine updates only.

總而言之,

我的問題是 :是否可以在Powershell中使用QueryHistory來獲取遠程計算機上的更新列表(without invoke... that requires PSRemoting... / or tools like psexec...) ,如果可以,如何?

這里同樣的問題。 我仍然無法弄清楚,但是我想出的最后一種方法是:

  1. 使用運行QueryHistory所需的代碼編寫ps1腳本
  2. 編寫另一個ps1腳本,該腳本使用以下命令在遠程計算機上創建進程

     Invoke-WmiMethod -class Win32_process -name Create -ArgumentList $cmd_command_string -Computername $computerName -erroraction Stop -Credential $credential 
  3. 這是$cmd_command_string :它基本上會打開一個cmd,該cmd會觸發powershell

     $cmd_command_string="cmd /C powershell.exe -EncodedCommand " + $ps_command_stringEncoded + " >> C:\\Windows\\output.log" 
  4. 現在編寫代碼,讀取您編寫的第一個ps1,將其放在字符串中並在base64中編碼(這就是上面的代碼塊中的$ps_command_stringEncoded
  5. 等待過程結束,然后檢索輸出文件。

在我看來是合法的,但無論如何我無法使其正常工作。 如果有人想嘗試一下...

編輯 :我最終在遠程計算機上復制了VBS腳本,從該腳本調用QueryHistory,在文件上寫入輸出,然后取回該遠程文件。 臟,但是可以用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM