2013-11-26 3 views
2

powershell을 처음 사용하면서도 논리를 가져 오려고합니다.Powershell - SET-ADUSER samaccountname 수정

특정 OU의 samaccountname의 활성 디렉토리를 필터링하고 문자열 끝에 "adm"을 포함하고 싶습니다 (phil_test_adm). 사용자가 발견되면 "adm"을 "tst"로 바꾸려고합니다. 지금까지 내가 아래에있다, 다시 나는 논리와 투쟁하고있다.

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

당신이 "만약 $ 사용자가 이유는 무엇입니까. $ users에 저장된 결과가 adm에서 이미 필터링 된 경우 하단의 sammaccountname -eq "* 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')} 
관련 문제