2017-09-19 5 views
-1

1つのファイラから別のファイラにデータを移行しており、Active Directoryプロファイルの下に多数のユーザー用にホームディレクトリを設定しています。一部のユーザーは\\\x.x.x.x\sharename\etc、一部は\\\hostname\sharename\etc、一部は\\\hostname.domain.global\sharename\etcです。Active Directory内のホームディレクトリの一部変更

私が同じ他のすべてを残し、domain.global\sharename\etcの新しいDFS名でx.x.x.xhostnamehostname.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文字以上を取得し、(^)2つの\文字で開始します。

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

これはに変換、その後に1つ以上の文字(.+)を入力します。 ()は、パス部分をキャプチャし、文字列置換(すなわち、$_.Matches[0].Groups[1].Value)で使用できるようにします。