diff --git a/src/System.Management.Automation/engine/MshMemberInfo.cs b/src/System.Management.Automation/engine/MshMemberInfo.cs index b77730296a5..510ee7af271 100644 --- a/src/System.Management.Automation/engine/MshMemberInfo.cs +++ b/src/System.Management.Automation/engine/MshMemberInfo.cs @@ -2757,13 +2757,14 @@ private static Type GetPSMethodProjectedType(Type type, bool isOut = false) if (type.IsByRef) { - var elementType = type.GetElementType(); + var elementType = GetPSMethodProjectedType(type.GetElementType()); type = isOut ? typeof(PSOutParameter<>).MakeGenericType(elementType) : typeof(PSReference<>).MakeGenericType(elementType); } else if (type.IsPointer) { - type = typeof(PSPointer<>).MakeGenericType(type.GetElementType()); + var elementType = GetPSMethodProjectedType(type.GetElementType()); + type = typeof(PSPointer<>).MakeGenericType(elementType); } return type; diff --git a/test/powershell/Modules/Microsoft.PowerShell.Utility/Get-Member.Tests.ps1 b/test/powershell/Modules/Microsoft.PowerShell.Utility/Get-Member.Tests.ps1 index 35d3e5c7f2e..acb6a6f68c9 100644 --- a/test/powershell/Modules/Microsoft.PowerShell.Utility/Get-Member.Tests.ps1 +++ b/test/powershell/Modules/Microsoft.PowerShell.Utility/Get-Member.Tests.ps1 @@ -40,6 +40,13 @@ Describe "Get-Member" -Tags "CI" { Get-Member -InputObject $o | Should -Not -BeNullOrEmpty } + + It "Should be able to be called on IntPtr" { + $results = [System.IntPtr] | Get-Member -Type Property -Static | Sort-Object -Property Name + $results.Count | Should -BeExactly 2 + $results[0].Name | Should -BeExactly 'Size' + $results[1].Name | Should -BeExactly 'Zero' + } } Describe "Get-Member DRT Unit Tests" -Tags "CI" {