我在使用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
答案 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'
}
}
}
}