Using 'Get-GPInheritance' Command in Powershell 7

%3CLINGO-SUB%20id%3D%22lingo-sub-2061936%22%20slang%3D%22en-US%22%3EUsing%20'Get-GPInheritance'%20Command%20in%20Powershell%207%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2061936%22%20slang%3D%22en-US%22%3E%3CP%3EUsing%20the%20'Get-GPInheritance'%20command%20in%20Powershell%207%20returns%20the%20GPOLink%20class%20rather%20than%20the%20GPO%20name%20for%20each%20GPO%20listed%20in%20the%20'InheritedGpoLinks'%20property.%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-powershell%22%3E%3CCODE%3EGet-GPInheritance%20-Target%20%24ou%20%7C%20Select-ExpandProperty%20InheritedGpoLinks%20%7C%20FT%3C%2FCODE%3E%3C%2FPRE%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EBut%20the%20same%20command%20outputs%20the%20GPO%20names%20successfully%20in%20Windows%20PowerShell%205.1.%26nbsp%3B%3C%2FP%3E%3CP%3EHow%20can%20I%20get%20this%20to%20work%20in%20Powershell%207%3F%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-LABS%20id%3D%22lingo-labs-2061936%22%20slang%3D%22en-US%22%3E%3CLINGO-LABEL%3EWindows%20PowerShell%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2068259%22%20slang%3D%22en-US%22%3ERe%3A%20Using%20'Get-GPInheritance'%20Command%20in%20Powershell%207%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2068259%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F929527%22%20target%3D%22_blank%22%3E%40bobstertech%3C%2FA%3E%26nbsp%3B%3C%2FP%3E%3CP%3Emmm.%3C%2FP%3E%3CP%3EI%20am%20checking%20the%20issue%20and%20notice%20that%20there%20are%20a%20lot%20of%20different%20between%20running%20the%20command%20on%20Powershell%205.1%20(Infrastructure%20version)%20vs%20Powershell%207%3C%2FP%3E%3CP%3Eeven%20the%20object%20type%20and%20the%20return%20is%20different%2C%26nbsp%3B%3C%2FP%3E%3CP%3EPowershell%205.1%2C%20Notice%20that%20the%20name%20is%20GPOLink%2C%20which%20seems%20to%20be%20an%20object%20holding%20the%20value%26nbsp%3B%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-powershell%22%3E%3CCODE%3EPS%20C%3A%5CUsers%5CAdministrator%26gt%3B%20((Get-GPInheritance%20-Target%20%24ou%20).InheritedGpoLinks)%5B0%5D.gettype()%0A%0AIsPublic%20IsSerial%20Name%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20BaseType%0A--------%20--------%20----%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20--------%0ATrue%20%20%20%20%20False%20%20%20%20GpoLink%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20System.Object%3C%2FCODE%3E%3C%2FPRE%3E%3CP%3E%26nbsp%3BPowershell%207.1%2C%20Notice%20that%20the%20Value%20type%20is%20String%20not%20GPOLink%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-powershell%22%3E%3CCODE%3EPS%20C%3A%5CProgram%20Files%5CPowerShell%5C7%26gt%3B%20((Get-GPInheritance%20-Target%20%24ou%20).InheritedGpoLinks)%5B0%5D.gettype()%0A%0AIsPublic%20IsSerial%20Name%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20BaseType%0A--------%20--------%20----%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20--------%0ATrue%20%20%20%20%20True%20%20%20%20%20String%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20System.Object%3C%2FCODE%3E%3C%2FPRE%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EI%20will%20do%20more%20checks%20on%20this%2C%20this%20is%20maybe%20because%20the%20GroupPolicy%20module%20was%20written%20and%20tested%20in%20PS5.1%20but%20not%207%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2070772%22%20slang%3D%22en-US%22%3ERe%3A%20Using%20'Get-GPInheritance'%20Command%20in%20Powershell%207%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2070772%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F790105%22%20target%3D%22_blank%22%3E%40farismalaeb%3C%2FA%3E%26nbsp%3B%3C%2FP%3E%3CP%3EInteresting.%20Thanks%20for%20looking%20into%20this.%3C%2FP%3E%3C%2FLINGO-BODY%3E
New Contributor

Using the 'Get-GPInheritance' command in Powershell 7 returns the GPOLink class rather than the GPO name for each GPO listed in the 'InheritedGpoLinks' property.

 

Get-GPInheritance -Target $ou | Select-ExpandProperty InheritedGpoLinks | FT

 

But the same command outputs the GPO names successfully in Windows PowerShell 5.1. 

How can I get this to work in Powershell 7?

2 Replies

@bobstertech 

mmm.

I am checking the issue and notice that there are a lot of different between running the command on Powershell 5.1 (Infrastructure version) vs Powershell 7

even the object type and the return is different, 

Powershell 5.1, Notice that the name is GPOLink, which seems to be an object holding the value 

 

PS C:\Users\Administrator> ((Get-GPInheritance -Target $ou ).InheritedGpoLinks)[0].gettype()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     False    GpoLink                                  System.Object

 

 Powershell 7.1, Notice that the Value type is String not GPOLink

 

PS C:\Program Files\PowerShell\7> ((Get-GPInheritance -Target $ou ).InheritedGpoLinks)[0].gettype()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     String                                   System.Object

 

 

Even when you run Get-GPInheritance -Target $ou 

Powershell 5.1: will return the GPNmae

Powershell 7.1: will return Microsoft.GroupPolicy.GpoLink

I will do more checks on this, this is maybe because the GroupPolicy module was written and tested in PS5.1 but not 7

 

@farismalaeb 

Interesting. Thanks for looking into this.