當 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
留言列表