做爲一個後臺程序猿,常常須要把一堆程序集(DLL)或者應用程序(EXE)複製到多個服務器上,實現程序的代碼邏輯更新,用以測試新的功能或改動邏輯。這裏給你們介紹一個本身實現的PowerShell腳本,方便你們替換DLL或者EXE到多個Windows機器上。html
用於方便複製多個文件到多個服務器上。shell
腳本的主要功能以下:緩存
命令參數簡單以下,一共有三個可用參數:服務器
配置文件格式例子以下:學習
其中Server填遠程服務器的地址,Service Display Name填複製文件前須要中止的Windows服務顯示名字,Process Name填須要中止的進程名字,Item是要複製的文件或文件夾,以上參數能夠有多個節點。測試
Last Write Time填時間戳,全部修改時間在這以後的文件夾和文件都將會被複制,只能有一個。優化
Destination Folder填要複製到的目的端機器的文件夾路徑,若是沒有會自動建立,只能有一個。ui
須要複製的源端文件夾以下:命令行
執行命令PowerShell窗口以下:設計
一個目的端服務器的效果:
使用這個腳本的時候可能會遇到一點問題,和環境配置有關,具體狀況和解決方法以下:
如圖,執行命令的時候報錯:
解決方法:
以管理員運行Windows PowerShell,輸入以下命令容許執行腳本」 Set-ExecutionPolicy -ExecutionPolicy Unrestricted」。若是不想設置成Unrestricted,具體參考Set-ExecutionPolicy。
如圖,執行命令的時候報錯:
解決方法:
以管理員運行Command Prompt,輸入以下命令」winrm set winrm/config/client @{TrustedHosts="VM1,VM2"}」設置信任主機。
儘管密碼已經確保正確了,可是遠程建立文件夾或者複製文件的時候仍然報用戶名密碼錯誤。
解決方法:
一是手動直接訪問UNC路徑,把用戶名密碼保存在系統中,二是執行以下命令」 cmdkey /add:targetname /user:username /pass:password」,把用戶名密碼緩存到系統中。
錯誤以下:
解決方法:
在目的端機器(10.2.38.53)上管理員運行Command Prompt,輸入命令」winrm quickconfig」開啓服務:
截圖1.
截圖2.
Note:腳本暫時不夠完善,完成一點功能,可能有BUG,還有更多的優化空間,好比並行執行復制命令,支持全命令參數等,之後可能會繼續更新優化。
腳本下載地址:http://files.cnblogs.com/files/lavender000/OneClickToReplaceMultipleFilesToMultipleServers.zip。
[原創文章,轉載請註明出處,僅供學習研究之用,若有錯誤請留言,如喜歡請推薦,謝謝支持]
[原文:http://www.cnblogs.com/lavender000/p/6958618.html,來自永遠薰薰]