當 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

paul 發表在 痞客邦 PIXNET 留言(0) 人氣()