這幾天要在單位部署一個軟件包,是msi形式的,據說可以通過“域推送”的形式安裝,搜索了一下,發現需要在 組策略->軟件設置->軟件安裝 里面添加放在共享目錄里的軟件包。但是我試過無論在“計算機配置”里面還是在“用戶配置”里面添加那個軟件包,無論是“發布”還是“指派”,都沒辦法自動安裝,最多只是在“添加刪除程序”里面的“添加新程序”出現那個軟件包,還需要手動安裝。
域控制器上按照部門劃分了多個組織單位(OU),并把用戶分配到各自的組織單位中,組策略就是在這些組織單位上面應用的。
昨天晚上看了一下“Windows2000資源大全”,里面有講到這種軟件安裝方法。原來是要把計算機也劃分到組織單位中,然后在那個組織單位的組策略的“計算機配置”里面設置那個軟件包,當計算機啟動后,進入“應用計算機設置”階段,還沒出現登錄界面時,就會自動安裝。之前對組策略的理解有問題,以為組策略只應用于用戶,實際上是“用戶配置”應用于用戶,“計算機配置”應用于計算機,要對讓每臺計算機自動安裝,而不是在用戶登錄之后安裝,就必須在“計算機配置”里面設置,要把這個設置應用于所有計算機,就要把那些計算機劃分到某個組織單位,然后對這個組織單位應用組策略。
之前嘗試過用另外一種方法實現軟件的自動安裝,這種方法不僅僅適用于msi,還適用于所有安裝文件。
利用Windows的WMI服務,可以對遠程用戶的注冊表進行操作,在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce里面添加一個值為安裝文件路徑的字符串,就會在計算機啟動并登錄后執行該安裝文件,執行完畢后會把這個鍵值刪除,也就是只執行一次。
利用PsTools,可以對遠程計算機進行重啟操作,當計算機重啟后,用戶登錄時,就會執行安裝過程。如果不需要倒計時重啟,還可以通過WMI服務進行重啟操作,這樣就可以完全通過Script來實現,并且能夠記錄操作的成功與否。
通過以下代碼可以連接遠程計算機:
Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objWMIService = objSwbemLocator.ConnectServer(strComputer,"root\default",strUser,strPassword,"MS_409","ntlmdomain:")
其中strComputer是遠程計算機名,strUser是域管理員帳號,strPassword是域管理員密碼
得到objWMIService之后,就可以像對本機一樣操作WMI,例如獲取注冊表操作類StdRegProv:
Set objStdRegProv = objWMIService.Get("StdRegProv")
關于遠程注冊表操作可以查看MSDN里的StdRegProv類說明。
通過Win32_OperatingSystem類可以實現對遠程計算機的關機、重啟等操作。
WMI是個強大的工具,在局域網中可以實現很多方便的管理操作。但是需要通過VBScript來實現,而VBScript的異常處理十分弱智;使用JScript的話,很多WMI類的操作又十分繁瑣。