當 User 登入網域時,透過群組管理物件(GPO)則可以達到想要 執行的工作,這次的筆記重點在 DOS Batch File 的注意事項, 以下內容為簡單的範例。老實說..Batch File 真的很難用。= ='.. 以下範例當某個群組的使用者,登入網域時,將會自動執行 Server 上的 Batch Scripts,偵測網路磁碟連線是否正常,因為 Windows Samba 的連線若超過 15分鐘無任何動作,會將網路磁碟中斷, 確保算圖不會因網路磁碟斷線,導致有算黑圖的情形。 【 環境說明 】 作業系統:Windows Server 2003 Batch File 路徑:\\ad\SYSVOL\abc.com.tw\scripts\ 【 Batch File 】
CLS @echo off ::NetDrive Tool v0.1 By Paul ::20100203 Change Network Test & ReMount TimeOut SET Netip=192.168.1.10 SET Hd=H SET Xd=X ::Network Test ping -n 3 %Netip% | find "Reply" IF %ERRORLEVEL%==1 GOTO Netclose GOTO Checkdriver exit :Checkdriver ping -n 87 127.0.0.1 If not exist %Hd%: set /a CK+=1 && net use %Hd%: \\ASer\Render | echo %date%-%time% %Hd% NetDrive ReMount >> \\%Netip%\MountLog\%computername%.txt If not exist %Xd%: set /a CK+=1 && net use %Xd%: \\BSer\db | echo %date%-%time% %Xd% NetDrive ReMount >> \\%Netip%\MountLog\%computername%.txt ping -n 210 127.0.0.1 If %CK% GEQ 18 GOTO CHclose set /a CKSum+=1 If %CKSum% GEQ 19 set CK=0 && CKSum=0 GOTO Checkdriver :Netclose echo Mountsys %date%-%time% Network Test Error >> C:\time.log exit :CHclose ping -n 3 %Netip% | find "Reply" IF %ERRORLEVEL%==1 GOTO Netclose echo Mountsys %date%-%time% ReMount TimeOut >> \\%Netip%\MountLog\%computername%.txt exit
【 註解說明 】 ※ 若將 Batch File 放置在 Server 端 ( \\ad\SYSVOL\abc.com.tw\scripts\ )  scripts 會系統背景執行,無視窗可查看,記得程式內要加上  儲存 Log 的功能,避免程式出錯找不到原因。 ※ Batch 的註解為「::」,與文字間不得有空白,否則會無法正確執行該程式。  正確寫法為 - 「::Test Tool」,即使在 Local 端執行該批次  檔無出現問題,但實測後發現,若「::」空一個接著描述,程式將會自動中斷。 ※ 若有兩個註解,註解與註解間也不得有空白。 ※ 使用 IF 的語法,計算式盡量不要放置後方執行,會產生 Set /a 失效。 ※ 「&&」與「|」的用法要特別注意,「&&」為邏輯用。 ※ 若要用「wait」指令,要記得將 wait.exe Copy 至 「%windir%/system32」。 ※ GEQ:判斷式,等於或大於,可查詢 help。 【 程式約略說明 】 1) 測試網路是否可以正常 ping 到 AD IP,若失敗結束程式,儲存 Log。 2) 程式五分鐘偵測一次,網路磁碟是否斷線。( Ping Local IP = wait 的功能 ) 3) 若重複掛載次數超過 18次,網路有通將含機器名稱的 Log 丟到 AD 目錄,   網路不通紀錄在本機硬碟。避免在網路斷線時,程式重複執行。 4) 當整個 Loop 執行超過 19次,且重複掛載未超過 18次,則將兩個數值歸零,   避免超出計算次數,程式自動關閉。 【 延伸閱讀 】        Microsoft DOS if command        Microsoft DOS set command        Set 命令設定文件 以上資料居然花了兩三天才搞懂,本來想用 For 迴圈,但苦於 batch 在程式判別上太難用,直到今天才發現,原來..Windows Server 也支援 .vbs 的檔案,知道的時候,實在很想吐血。Orz... 甘苦筆記..完搞!                           Paul
文章標籤