Active Directory中主目录的部分更改

时间:2017-09-19 18:49:30

标签: powershell active-directory partial home-directory

我们正在将数据从一个文件管理器迁移到另一个文件管理器,并且我们在其Active Directory配置文件下为一堆用户设置了主目录。有些用户有\\\x.x.x.x\sharename\etc,有些用户有\\\hostname\sharename\etc,有些用户有\\\hostname.domain.global\sharename\etc

我需要使用新的DFS名称x.x.x.x替换hostnamehostname.domain.globaldomain.global\sharename\etc的第一部分,并保留其他所有内容。

我该怎么做呢?

谢谢。

1 个答案:

答案 0 :(得分: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

正则表达式模式是:

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

这转换为:从(^)两个\个字符开始,获得一个或多个不是\的字符,后跟一个\,然后一个或多个字符(.+)。 ( )捕获路径部分并使其在字符串替换中可用(即$_.Matches[0].Groups[1].Value)。