0

我想使用正则表达式搜索和替换部分 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)
4

4 回答 4

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
于 2013-01-30T11:53:44.073 回答
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])"}
于 2013-01-30T10:17:53.457 回答
0
"\\MyDomain\PCTest\John Doe", "\\MyDomain\Julie Doe" | % {
  $_ -replace '\\MyDomain(\\.*\\)', '$1'
}
于 2013-01-30T12:07:25.750 回答
0

另一种可能:

'\\MyDomain\PCTest\John Doe','\\MyDomain\Julie Doe' |
ForEach-Object {
'\\{0}\{1}' -f $_.split('\')[-2,-1]
}
于 2013-01-30T13:00:53.343 回答