2016-05-16 28 views
1

我最近一起攻擊了一個將分散服務器上多個遠程安裝的進程。我們正在尋找一種在100多臺遠程服務器上自動安裝SQL補丁的方法。上週六我能夠成功傳球。它工作得很好。使用Invoke-Command執行的日誌記錄命令

我不是PowerShell的專家,甚至是新手。我能夠得到一些工作,並希望擴大它。下面的命令是我在PowerShell中發佈的內容,並且希望將每個服務器的一些日誌記錄應用到補丁程序的開始和結束時間。我想將其保存到所有服務器都可以連接到的中央表格。

我的問題是沒有人有任何好的資源,會讓我失望的道路上,我正在尋找或可以幫助我提高我的技能,以改善我的過程。

-ComputerName參數被打散到一個txt文件中,並帶有一個我希望在該組中修補的服務器名稱列表。

將-ScriptBlock參數分配到具有通過命令行執行SQL修補程序的命令的移除服務器上的批處理文件。 "D:\DBA\SQLPatching\SQL_2012\SP3_CU2\SQLServer2012-KB3137746-x64.exe" /quiet /IAcceptSQLServerLicenseTerms /Action=Patch /AllInstances

感謝

$jobWRM = invoke-command -computerName (get-content D:\DBA\SQLPatching\May2016\LLE\ServerLists\ServerList_EIQDBS01_1.txt) -scriptblock {D:\DBA\SQLPatching\SQL_2012\SP3_CU2\Patch-SQL2012_SP3_CU2.bat} -jobname WinRM -throttlelimit 16 -AsJob 

回答

0

如果你正在尋找正好趕上執行狀態,你可以扔掉那些computernames在一個變量,並通過他們的foreach,而寫完成到日誌。

如果你想讓錯誤更深入地排除故障,Pssessions會給你回錯(不知道你列出的批處理文件是否會給你很好的故障排除數據)。

你可以在網上找到

ForEach

PSSessions

+1

在這兩種方法中這樣的例子並沒有真正與記錄和跟蹤時間幫助,但是。他已經在使用工作,處於正確的軌道上。他只需要加入等待和記錄... –

+0

同意,奧斯汀。我有點想到foreach循環將能夠做到這一點。回顧一下這篇文章,我應該給出一個例子,說明如何將一個文件的服務器名稱,時間以及狀態描述。 – RowdyVinson

+0

我實際上認爲這是他需要的90%: https://technet.microsoft.com/zh-cn/library/hh849735.aspx –