我们正在将数据从一个文件管理器迁移到另一个文件管理器,并且我们在其Active Directory配置文件下为一堆用户设置了主目录。有些用户有\\\x.x.x.x\sharename\etc
,有些用户有\\\hostname\sharename\etc
,有些用户有\\\hostname.domain.global\sharename\etc
。
我需要使用新的DFS名称x.x.x.x
替换hostname
,hostname.domain.global
和domain.global\sharename\etc
的第一部分,并保留其他所有内容。
我该怎么做呢?
谢谢。
答案 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
)。