You can get a list of all Group Policy Objects (GPOs) with loopback very easily:
Get-GPO -All | Where { $($_ | Get-GPRegistryValue -Key "HKLM\Software\Policies\Microsoft\Windows\System" -Value UserPolicyMode -ErrorAction SilentlyContinue -WarningAction SilentlyContinue | Select -ExpandProperty Value) -eq 1}
This will query all GPOs and then conditionally return them if they have the value for UserPolicyMode set.
You could replace the “Get-GPO -all” with a filtered version if you were only interested in certain GPOs
A little longer version if you want to abstract it or modify it earlier:
Function GetLoopBack {
param($gpo)
$gpo | Get-GPRegistryValue -Key "HKLM\Software\Policies\Microsoft\Windows\System" -Value UserPolicyMode `
-WarningAction SilentlyContinue | Select -ExpandProperty Value
}
$GPOs = $GPOs | SELECT -Property *, @{Name='LoopBack';Expression={GetLoopBack2 $_}}
