2017-09-19 25 views
-1

한 파일러에서 다른 파일러로 데이터를 마이그레이션하고 Active Directory 프로필 아래에 여러 사용자에 대한 홈 디렉토리를 설정했습니다. 일부 사용자는 \\\x.x.x.x\sharename\etc이고 일부는 \\\hostname\sharename\etc이고 일부 사용자는 \\\hostname.domain.global\sharename\etc입니다.Active Directory에서 홈 디렉토리의 부분 변경

나는 다른 같은 모든 것을 떠나, x.x.x.x, hostnamedomain.global\sharename\etc의 새 DFS 이름으로 hostname.domain.global의 제 1 부분을 교체해야합니다.

어떻게해야합니까?

감사합니다.

+0

언급해야 할 것은 모든 사용자는 예에서 \ sharename 다음에 다른 폴더가 있으므로 나중에 \\ domain.global \ sharename \에 모두 변경할 수는 없습니다. – nfoman

+0

새 Dfs 이름이'domain.global \ sharename \ etc'이 아니라'domain.global'이라는 것을 가정하십시오? 질문을 예제로 업데이트하십시오. –

+0

안녕하세요, 예. 새 DFS 이름은 domain.global입니다. 예 : \\ hostname \ sharename \ etc 새 \\ domain.global \ sharename \ etc – nfoman

답변

0

정규 표현식을 사용할 수 있어야합니다. 예 :

PS C:\> '\\1.2.3.4\sharename1\etc1' | 
    Select-String '^\\\\[^\\]+\\(.+)' | 
    ForEach-Object { "\\domain.global\{0}" -f $_.Matches[0].Groups[1].Value } 
\\domain.global\sharename1\etc1 

PS C:\> '\\hostname\sharename2\etc2' | 
    Select-String '^\\\\[^\\]+\\(.+)' | 
    ForEach-Object { "\\domain.global\{0}" -f $_.Matches[0].Groups[1].Value } 
\\domain.global\sharename2\etc2 

PS C:\> '\\hostname.domain.global\sharename3\etc3' | 
    Select-String '^\\\\[^\\]+\\(.+)' | 
    ForEach-Object { "\\domain.global\{0}" -f $_.Matches[0].Groups[1].Value } 
\\domain.global\sharename3\etc3 

정규 표현식 패턴은 다음과 같습니다이가 번역

^\\\\[^\\]+\\(.+) 

: 단일 \ 다음 (^)이 개 \ 문자가 아닌 \ 있습니다 얻을 1 개 이상의 문자, 시작 , 하나 이상의 문자 (.+)를 입력하십시오. ()은 경로 부분을 캡처하여 문자열 대체 (예 : $_.Matches[0].Groups[1].Value) 할 수 있도록합니다.