2014年1月23日 星期四

改了一下更改AD屬性的批次檔寫法

蠢蠢的我,之前用C#,簡單寫了能應付需求的批次檔出來,讓每一行指令都能快速地放在批次檔中,只要再將批次檔丟到AD的SERVER上去,並有來源檔即可執行並滿足需求。

首先進入首頁

1.  選擇想要的小功能
圖1  目前的首頁














2.  選擇帳號到期日及文字檔(*.txt or *.csv),內容只要ID LIST,例如:AA0000共六碼
圖2  設定截止日

 3.  選完來源後就建立好批次檔了,剩下就只差丟到server上去執行囉。
圖3  告知批次檔已建立









其他也是類似的作法,就不一一贅述,而原本的作法是把每一行指令塞到批次檔後執行,但我測了若把公司全部帳號要改某個屬性,比如說UPN,文字檔竟然大到3XXX KB,傻眼了,於是想說能不能用別的方式來做,後來稍微google了一下,其實用批次檔的For迴圈就可以解決了,於是前後比較寫法大概如下:

dsquery user -samid aa0000 | dsmod user -acctexpires 天數
dsquery user -samid aa0001 | dsmod user -acctexpires 天數
dsquery user -samid aa0002 | dsmod user -acctexpires 天數
           ︴
dsquery user -samid zz9999 | dsmod user -acctexpires 天數
↑這樣最多會有 26*26*10*10*10*10 的排列組合,長成文字檔也是非常可觀的呢。

於是批次檔改成

%echo off
for /f %%a in (來源) do (
dsquery user -samid %%a -limit 0|dsmod user -acctexpires 天數)
PAUSE

才四行就可以解決這個問題,而且效果還是一樣的呢,之前都不知道,做一堆白工,但也好啦,長知識囉。


沒有留言: