![](/img/trans.png)
[英]How to add a windows firewall port exception on a remote machine using powershell?
[英]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...)
,如果可以,如何?
這里同樣的問題。 我仍然無法弄清楚,但是我想出的最后一種方法是:
編寫另一個ps1腳本,該腳本使用以下命令在遠程計算機上創建進程
Invoke-WmiMethod -class Win32_process -name Create -ArgumentList $cmd_command_string -Computername $computerName -erroraction Stop -Credential $credential
這是$cmd_command_string
:它基本上會打開一個cmd,該cmd會觸發powershell
$cmd_command_string="cmd /C powershell.exe -EncodedCommand " + $ps_command_stringEncoded + " >> C:\\Windows\\output.log"
$ps_command_stringEncoded
) 在我看來是合法的,但無論如何我無法使其正常工作。 如果有人想嘗試一下...
編輯 :我最終在遠程計算機上復制了VBS腳本,從該腳本調用QueryHistory,在文件上寫入輸出,然后取回該遠程文件。 臟,但是可以用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.