我想使用正则表达式搜索和替换部分UserObject路径。
如果您在本地组中查询用户的窗口,则会返回成员,如下例所示。本地用户显示与域相关的前缀,我想找到这个域前缀,从本地用户路径删除它。
Return Value:
\\MyDomain\PCTest\John Doe #(Local User)
\\MyDomain\Julie Doe #(Domain User)
After Formating: (how can i do this?)
\\PCTest\John Doe #(Local User)
\\MyDomain\Julie Doe #(Domain User)
答案 0 :(得分:2)
如果路径包含两个以上的元素,这将删除第一个元素:
'\\MyDomain\PCTest\John Doe','\\MyDomain\Julie Doe' | Foreach-Object{
if( ($items = $_.Split('\',[System.StringSplitOptions]::RemoveEmptyEntries)).Count -gt 2)
{
'\\'+ ($items[1..$items.count] -join '\')
}
else
{
$_
}
}
\\PCTest\John Doe
\\MyDomain\Julie Doe
答案 1 :(得分:0)
假设您的值存储在c:\ temp \ users.txt:
中gc C:\temp\users.txt |%{if ($_ -match "local"){$_.replace("MyDomain\","")}}
编辑:
$slices="\\MyDomain\PCTest\John Doe".split('\')
if($slices.Count -eq 5){wh "\\$($slices[3])\$($slices[4])"}
答案 2 :(得分:0)
"\\MyDomain\PCTest\John Doe", "\\MyDomain\Julie Doe" | % {
$_ -replace '\\MyDomain(\\.*\\)', '$1'
}
答案 3 :(得分:0)
另一种可能性:
'\\MyDomain\PCTest\John Doe','\\MyDomain\Julie Doe' |
ForEach-Object {
'\\{0}\{1}' -f $_.split('\')[-2,-1]
}