POWERSHELL:正则表达式查找和替换

时间:2013-01-30 10:10:20

标签: regex powershell

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

答案 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]
}