2014-11-10 3 views
0

틀림 홈 서버의 배치 이름 바꾸기, 내가 PowerShell은 괴물 아니다, 그래서 내가 그의 모든 사용자의 목록을 당겨하는 클라이언트 함께 일하고 ...파워 쉘 - HOMEPATH

펀트거야 CIFS 서버의 공유를 사용하여 주요 파일 서버 마이그레이션에서 AD HomeDirectory 경로를 리디렉션 할 수 있습니다. 이 목록은 AD에서 현재 볼 수있는 AD 사용자 홈 디렉토리 목록과 비교됩니다.

문제는 일부 사용자 디렉토리가 된 NT 사용자 이름 (이름을 불렀어 $) 및 일부 사용 SAMAACCOUNTNAME $를 사용하는 것입니다. 추가적으로 복잡하게하기 위해, 공유는 SERVER은 지난 10-15 년 동안 DNS 별칭의 정교한 기록으로 인해 다릅니다. 따라서 모든 사용자 홈 디렉토리가 현재 SERVERA에 존재하더라도 주소는 OLDSERVER3OLDERSERVER01 또는 OLDESTSERVERNT4 - 모든지도 위에 홈 디렉토리가 생성됩니다.

내가 목록에서 SAMAccountName을를 사용할 수있는 스크립트를 작성해야, 다음 에 홈 디렉토리에있는 모든 서버 정보를 변경 \ NEWSEVERNAME \ CURRENTSHARE $ - 희망 같은 것을 사용 :

Use UserList 
From UserList, get-ADuser -Identity $_ -HomeDrive "U:" -HomeDirectory 
in HomeDirectory replace \\*\ with \\NewServer\ while leaving the Share$ untouched. 
Set-ADuser -Identity $_ -HomeDrive "U:" -HomeDirectory 

정규 표현식, for/each 루프 등으로이 작업을 수행 할 수 있다고 확신합니다.하지만 함께 처리 할 수는 없습니다.

도움 주셔서 감사합니다.

+0

.split()을 사용하여 공유 이름을 추출 할 수 있습니다. 이 트릭을해야합니다 :'$ homedir = (Get-ADUser $ user -Properties homedirectory) .homedirectory; $ tmp = $ homedir.split ("\"); $ share = $ tmp [$ tmp.count-1]; set-aduser $ user -homedirectory "$ newserver \ $ share"' – Paul

+0

알아 냈어 - 이걸로 고마워, 폴! – JDKniepkamp

답변

0

나는 짧은 시간 전에 같은 마이그레이션을 수행했습니다. 다음은 공유 폴더를 변경하지 않고 새 서버를 설정하는 데 사용할 수있는 방법입니다.

Import-Module activedirectory 

$samAccountNameList = get-content "c:\userIds.txt" 
$newServer = "newFps01" 

foreach ($user in $samAccountNameList) { 
    $adProperties = get-aduser -Identity $user -Properties homeDirectory, homeDrive 
    $homeDrive = $adProperties.HomeDrive 
    # Split original homedirectory path and grab just the share folder portion 
    $shareFolder = ($adProperties.homeDirectory).Split("\")[3] 
    $newHomeDirectory = "\\$newServer\$shareFolder" 
    set-aduser -Identity $user -HomeDrive $homeDrive -HomeDirectory $newHomeDirectory 
}