2013-11-26 144 views
2

新來的PowerShell,仍然試圖讓邏輯。PowerShell的 - SET-ADUser便有修改SAM帳戶

我想過濾掉SAM帳戶在特定OU的Active Directory,也含有「ADM」的字符串(phil_test_adm)結束。當用戶被發現時,我想用「tst」替換「adm」。到目前爲止,我已經有了下面的內容,再一次,我對這個邏輯很感興趣。

import-module activedirectory 
$Path = 'OU=Example, OU=Users,DC=uk,DC=random,DC=com' 
$users = Get-ADUser -filter 'SamAccountName -like "*adm"' -SearchBase $Path | select-object samaccountname, name 
#foreach ($user in $users) 
#{ 
#Set-ADUser $user.samaccountname -Replace { 
#if $user.sammaccountname -eq "*adm" } 

正如你所看到的foreach開始我剛纔被打的。 謝謝你的幫助!

+0

爲什麼你有「如果$用戶。 sammaccountname當量「* ADM」」在底部的時候你的結果存儲在$用戶已被過濾的ADM? – Robin

回答

5

假設你的頭幾行正在努力獲取正確的結果,這的foreach塊應該工作:

foreach ($user in $users) 
{ 
    $newSamAccoutname = $user.SamAccountName.replace("adm","tst") 
    Set-ADUser $user -Replace @{samaccountname=$newSamAccoutname} 
} 
+0

哇..不難真的,當你想想吧!感謝您的輸入非常有幫助!現在只是爲了加入一些錯誤處理:)乾杯! – Richard

+0

不客氣,並且是這會是個好主意! – Robin

0

你還可以嘗試:

foreach ($user in $users) {Set-ADUser $user -samaccountname $($user.SamAccountName -replace 'adm$','tst')}