从字符串中解析GUID

时间:2016-04-19 20:51:36

标签: parsing powershell

我在使用trim时遇到了这个问题。它正在删除一些GUID。我想从中获取GUID。如果有人能提供帮助就会很感激。谢谢你的进步。

((Get-ADOrganizationalUnit -Filter {Name -eq "OUName"} -Properties LinkedGroupPolicyObjects,gplink) | ForEach-Object {if($_.GPlink){$_.GPlink.Split(",") | ForEach-Object {if($_ -like 'DC=DCNAME*'){if($_.length -gt 10){(((($_).trim('DC=DCNAME;0][LDAP://cn={')).trim('}')) ) }} }}}) 

我的输出是:

754FF9F1-078A-4E05-913D-4F36572B2FC6
EDDAAB18-2BA6-42E6-A5EC-21B0227BE71A
7DF312DB-EB73-418E-8F64-3E391F4639B7
6E3512-4100-48A3-9A65-4DA17A0E2D87
72EF89D6-2C57-40AC-A116-2CAD89F453ED
2][LDAP://cn={31BB7749-F6DC-4098-8F10-9D8B4B0F0C0A
78528B0-F379-4E8F-A166-ACE1448AF9B2

2 个答案:

答案 0 :(得分:2)

我不确定DC=..过滤器是如何帮助您的。 DC=部分位于guid之后,因此,当您在,上拆分时,当您与-like 'DC=DCNAME*'匹配时,第一个GUID是否会被忽略?实施例

  

[LDAP:// cn = {7BE35F55-E3DF-4D1C-8C3A-38F81F451D86},cn = policies,cn = system,DC = wingtiptoys, DC = local; 2] [LDAP:// cn = {7BE35F55-E3DF-4D1C-8111111} 下,CN = ......

如果您只想提取guid,我会直接{GUID},例如:

Get-ADOrganizationalUnit -Filter {Name -eq "OUName"} -Properties LinkedGroupPolicyObjects, gplink |
ForEach-Object { 
    if($_.GPlink) {
        #Anything between { and }
        [regex]::Matches($gplink,'(?<=\{).*?(?=\})') | ForEach-Object { $_.Value }
    }
}

答案 1 :(得分:1)

没有你的输入我不能确定,但​​你可能会尝试这样的事情

Get-ADOrganizationalUnit -Filter {Name -eq 'OUName'} -Properties LinkedGroupPolicyObjects, gplink | ForEach-Object {
    if ($_.GPlink) {
        $_.GPlink.Split(',') | ForEach-Object {
            if ($_ -like 'DC=DCNAME*' -and $_.length -gt 10) {
                #$_ = $_ -replace 'DC=DCNAME;\d+\]\[LDAP:\/\/cn=\{'
                #$_.trim('}')
                $_ -replace '^.*([a-f0-9]{8}-(?:[a-f0-9]{4}-){3}[a-f0-9]{12}).*$', '$1'
            }
        }
    }
}