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

パスに 3 つ以上の要素が含まれている場合、これにより最初の要素が削除されます。

'\\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
"\\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 に答える
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 に答える