2014年1月15日 星期三

AD 批次修改使用者的屬性

公司有時候會遇到一些例外狀況,會需要把所有同仁的屬性做修改,比如密碼永久有效(這裡不談資安議題...)等需求,那麼必須該怎麼做呢?
首先,可以先到AD主機去打開命令提示字元,然後使用dsquery及dsmod去修改使用者的屬性,假如我現在要將不能變更密碼選項打勾(圖1是未勾選),

圖1   使用者不能變更密碼未勾選






















1個帳號當然可以直接這樣勾一勾就好了,如果是100個,也可以悶著頭勾,但公司有好幾萬個人要怎麼辦呢(本公司就是好幾萬人...)?
所以就要將dsquery 跟 dsmod 合在一起變成一行指令去跑即可,例如:
dsquery user cn=John,ou=infra,ou=it,ou=company,dc=tw,dc=AAA,dc=com | dsmod user -canchpwd no
就會變成圖2了( 上列指令是針對單一使用者帳號做的,如果要針對OU內所有帳號做一樣的設定,只需要把cn=John的參數拿掉就可以了),至於有那些屬性可以修改就看備註囉。。

圖2    使用者不能變更密碼已勾選
























備註:
dsmod 說明

描述: 修改目錄中現存的使用者。
語法: dsmod user <UserDN ...> [-upn <UPN>] [-fn <FirstName>]
[-mi <Initial>] [-ln <LastName>] [-display <DisplayName>]
[-fnp <first name phonetic>] [-lnp <last name phonetic>]
[-displayp <display name phonetic>]
[-empid <EmployeeID>] [-pwd {<Password> | *}]
[-desc <Description>] [-office <Office>] [-tel <Phone#>]
[-email <Email>] [-hometel <HomePhone#>] [-pager <Pager#>]
[-mobile <CellPhone#>] [-fax <Fax#>] [-iptel <IPPhone#>]
[-webpg <WebPage>] [-title <Title>] [-dept <Department>]
[-company <Company>] [-mgr <Manager>] [-hmdir <HomeDir>]
[-hmdrv <DriveLtr>:] [-profile <ProfilePath>]
[-loscr <ScriptPath>] [-mustchpwd {yes | no}]
[-canchpwd {yes | no}] [-reversiblepwd {yes | no}]
[-pwdneverexpires {yes | no}]
[-acctexpires <NumDays>] [-disabled {yes | no}]
[{-s <Server> | -d <Domain>}] [-u <UserName>]
[-p {<Password> | *}] [-c] [-q] [{-uc | -uco | -uci}]
參數:
值 描述
<UserDN ...> 必要/stdin。要修改之一或多位使用者的辨別名稱 (DN)。
如果省略目標物件,則會從標準輸入 (stdin) 取得,支援
將另一個命令的輸出傳送為這個命令的輸入。
-upn <UPN> 將 UPN 值設定為 <UPN>。
-fn <FirstName> 將使用者名字設定為 <FirstName>。
-mi <Initial> 將使用者名字簡寫設定為 <Initial>。
-ln <LastName> 將使用者姓氏設定為 <LastName>。
-display <DisplayName> 將使用者顯示名稱設定為 <DisplayName>。
-fnp <FirstNamePhonetic> 將使用者注音標示名字設定為 <FirstNamePhonetic>。
-lnp <LastNamePhonetic> 將使用者注音標示姓氏設定為 <LastNamePhonetic>。
-displayp <DisplayNamePhonetic> 將使用者注音標示顯示名稱設定為 <DisplayNamePhonetic>。
-empid <EmployeeID> 將使用者員工識別碼設定為 <EmployeeID>。
-pwd {<Password> | *} 將使用者密碼重設為 <Password>。如果輸入 *,則會提示
您輸入密碼。
-desc <Description> 將使用者描述設定為 <Description>。
-office <Office> 將使用者辦公室位置設定為 <Office>。
-tel <Phone#> 將使用者電話號碼設定為 <Phone#>。
-email <Email> 將使用者電子郵件地址設定為 <Email>。
-hometel <HomePhone#> 將使用者住家電話號碼設定為 <HomePhone#>。
-pager <Pager#> 將使用者呼叫器號碼設定為 <Pager#>。
-mobile <CellPhone#> 將使用者行動電話號碼設定為 <CellPhone#>。
-fax <Fax#> 將使用者傳真號碼設定為 <Fax#>。
-iptel <IPPhone#> 將使用者 IP 電話號碼設定為 <IPPhone#>。
-webpg <WebPage> 將使用者網頁 URL 設定為 <WebPage>。
-title <Title> 將使用者職稱設定為 <Title>。
-dept <Department> 將使用者部門設定為 <Department>。
-company <Company> 將使用者公司資訊設定為 <Company>。
-mgr <Manager> 將使用者主管設定為 <Manager>。
-hmdir <HomeDir> 將使用者主目錄設定為 <HomeDir>。如果這是 UNC
路徑,則也必須透過 -hmdrv 指定對應到這個路徑的磁碟機
代號。
-hmdrv <DriveLtr>: 將使用者主磁碟機代號設定為 <DriveLtr>:
-profile <ProfilePath> 將使用者的設定檔路徑設定為 <ProfilePath>。
-loscr <ScriptPath> 將使用者的登入指令檔路徑設定為 <ScriptPath>。
-mustchpwd {yes | no} 設定使用者是否必須在下次登入時變更密碼 (yes 或 no)。
-canchpwd {yes | no} 設定使用者是否可以變更密碼 (yes 或 no)。
如果 -mustchpwd 設定為 "yes",則這個設定應該為 "yes"。
-reversiblepwd {yes | no}
設定是否應該使用可反轉的加密來存放使用者密碼 (yes 或
no)。
-pwdneverexpires {yes | no}
設定使用者密碼是否永久有效 (yes 或 no)。
-acctexpires <NumDays> 將使用者帳戶設定成從今天算起的 <NumDays> 天後到期。
值為 0 表示帳戶會在今天結束前到期。
正數值表示將到期日設定在未來。
負數值表示將到期日設定在過去。
字串值 "never" 表示帳戶永久有效。
-disabled {yes | no} 設定使用者帳戶是否已停用 (yes 或 no)。
{-s <Server> | -d <Domain>}
-s <Server> 會連線到名稱為 <Server> 的 AD DC/LDS
執行個體。
-d <Domain> 會連線到網域 <Domain> 內的 AD DC。
預設值: 登入網域中的 AD DC。
-u <UserName> 以 <UserName> 身分連線。預設值: 登入的使用者。
使用者名稱可以是: 使用者名稱、網域\使用者名稱
或使用者主要名稱 (UPN)。
-p <Password> 使用者 <UserName> 的密碼。如果輸入 *,則會提示
您輸入密碼。
-c 連續操作模式: 指定多個目標物件時,會報告錯誤,
但是會繼續處理引數清單中的下一個物件。如果未指定
這個選項,命令會在第一次發生錯誤時結束。
-q 安靜模式: 不在標準輸出顯示所有輸出。
{-uc | -uco | -uci} -uc 指定輸出到管道或從管道輸入時使用 Unicode 格式。
-uco 指定輸出到管道或檔案時使用 Unicode 格式。
-uci 指定從管道或檔案輸入時使用 Unicode 格式。
備註:
如果輸入的值含有空格,請使用引號括住該文字 (例如,
"CN=John Smith,CN=Users,DC=microsoft,DC=com")。
如果輸入多個值,則必須用空格隔開每個值 (例如,辨別名稱的清單)。
特殊權杖 $username$ (區分大小寫) 可以用來將 SAM 帳戶名稱當成
-webpg、-profile、-hmdir 及 -email 等參數的值。
例如,如果目標使用者 DN 是 CN=Jane Doe,CN=users,CN=microsoft,CN=com,
而 SAM 帳戶名稱屬性是 "janed",則 -hmdir 參數可以有下列替代項目:
-hmdir \users\$username$\home
-hmdir 參數的值會修改為下列值:
- hmdir \users\janed\home
範例:
重設使用者的密碼:
dsmod user "CN=John Doe,CN=Users,DC=microsoft,DC=com"
-pwd A1b2C3d4 -mustchpwd yes
將多個使用者密碼重設成共用密碼,並強制他們在下次登入時變更其密碼:
dsmod user "CN=John Doe,CN=Users,DC=microsoft,DC=com"
"CN=Jane Doe,CN=Users,DC=microsoft,DC=com" -pwd A1b2C3d4 -mustchpwd yes
同時啟用多個使用者帳戶:
dsmod user "CN=John Doe,CN=Users,DC=microsoft,DC=com"
"CN=Jane Doe,CN=Users,DC=microsoft,DC=com" -disabled yes
使用 $username$ 權杖,將多位使用者的設定檔路徑修改成共用路徑:
dsmod user "CN=John Doe,CN=Users,DC=microsoft,DC=com"
"CN=Jane Doe,CN=Users,DC=microsoft,DC=com" -profile \users\$username$\profile

請參閱:
dsmod computer /? - 修改目錄中現有電腦的說明。
dsmod contact /? - 修改目錄中現有連絡人的說明。
dsmod group /? - 修改目錄中現有群組的說明。
dsmod ou /? - 修改目錄中現有組織單位的說明。
dsmod server /? - 修改目錄中現有 AD DC/LDS 執行個體的說明。
dsmod user /? - 修改目錄中現有使用者的說明。
dsmod quota /? - 修改目錄中現有配額規格的說明。
dsmod partition /? - 修改目錄中現有分割的說明。
目錄服務命令列工具說明:
dsadd /? - 新增物件的說明。
dsget /? - 顯示物件的說明。
dsmod /? - 修改物件的說明。
dsmove /? - 移動物件的說明。
dsquery /? - 尋找與搜尋準則相符物件的說明。
dsrm /? - 刪除物件的說明。

沒有留言: