I had a question regarding as to how Get-GPO is gluing together the objects when they are pipelined to Get-GPPermissions.
Get-GPO is producing Microsoft.GroupPolicy.GPO objects.
Get-GPPermissions is expecting object of type Microsoft.GroupPolicy.GPPermission and do not accept pipeline input ByValue based on the help information. So I would think that is connecting ByPropertyName but there are no property name matching parameters for Get-GPPermissions.
Any clarification will be greatly appreciated.
Get-GPO Property Names:
Get-GPPermissions properties accepting pipeline input from help system ByPropertyName
Name (position 1) Positional parameter
DisplayName is an alias for Name in the Get-GPPermission command, so binding by property name can still work. Any time you're curious about what PowerShell's doing with parameter binding, you can get all the gritty details with Trace-Command: