diff options
Diffstat (limited to 'content/posts/get-type-definition-in-powershell.md')
-rw-r--r-- | content/posts/get-type-definition-in-powershell.md | 215 |
1 files changed, 215 insertions, 0 deletions
diff --git a/content/posts/get-type-definition-in-powershell.md b/content/posts/get-type-definition-in-powershell.md new file mode 100644 index 0000000..7348075 --- /dev/null +++ b/content/posts/get-type-definition-in-powershell.md @@ -0,0 +1,215 @@ +--- +title: 'Get type definition in Powershell' +description: "Today I went back to some Powershell scripting with the Az module and it frustrated me that I wasn't easily able to know what properties `Get-AzADGroup` (or any of the other Az cmdlets) returned to me without actually invoking the cmdlet." +tags: ['powershell'] +date: 2021-08-27T09:43:57+02:00 +draft: false +--- + +Today I went back to some Powershell scripting with the Az module and it frustrated me that I wasn't easily able to know what properties `Get-AzADGroup` (or any of the other Az cmdlets) returned to me without actually invoking the cmdlet. E.g I dont want to invoke `New-AzADGroup` just to be able to see what properties it will give me so I can use that in my script. Previously I've relied on IntelliSens in my editor, but it often fails, so I sought out to find a more manual solution (who would have thought..). + +<!--more--> + +Some modules provide information in their help about what type a particular cmdlet returns. We can use this to get information about what that type contains. + +If we look at the `Get-AzADGroup` cmdlet as an example. When we run `Get-Help Get-AzADGroup -Full` we can see under the "OUTPUT" section that it returns a `Microsoft.Azure.Commands.ActiveDirectory.PSADGroup` type. To inspect that type we can do the following. + +```powershell +PS > Get-Help Get-AzADGroup -Full +... + +OUTPUTS + Microsoft.Azure.Commands.ActiveDirectory.PSADGroup + +... +PS > [Microsoft.Azure.Commands.ActiveDirectory.PSADGroup]::new() | gm + + TypeName: Microsoft.Azure.Commands.ActiveDirectory.PSADGroup + +Name MemberType Definition +---- ---------- ---------- +Equals Method bool Equals(System.Object obj) +GetHashCode Method int GetHashCode() +GetType Method type GetType() +ToString Method string ToString() +AdditionalProperties Property System.Collections.Generic.IDictionary[string,System.Object] AdditionalProperties {get;set;} +DeletionTimestamp Property System.Nullable[datetime] DeletionTimestamp {get;set;} +Description Property string Description {get;set;} +DisplayName Property string DisplayName {get;set;} +Id Property string Id {get;set;} +MailEnabled Property System.Nullable[bool] MailEnabled {get;set;} +MailNickname Property string MailNickname {get;set;} +ObjectType Property string ObjectType {get;} +SecurityEnabled Property System.Nullable[bool] SecurityEnabled {get;set;} +Type Property string Type {get;set;} + +``` + +Here we can see what methods and properties we will get if we run `Get-AzADGroup`. + +Another solution is to call either the `GetMembers()`, `GetProperties()` or `GetMethods()` on the type which will give you detailed information about each member. It's a little verbose to be frank.. So I prefer the first method. + +```powershell +PS > [Microsoft.Azure.Commands.ActiveDirectory.PSADGroup].GetProperties() + +MemberType : Property +Name : SecurityEnabled +DeclaringType : Microsoft.Azure.Commands.ActiveDirectory.PSADGroup +ReflectedType : Microsoft.Azure.Commands.ActiveDirectory.PSADGroup +MetadataToken : 385876641 +Module : Microsoft.Azure.PowerShell.Cmdlets.Resources.dll +IsCollectible : False +PropertyType : System.Nullable`1[System.Boolean] +Attributes : None +CanRead : True +CanWrite : True +IsSpecialName : False +GetMethod : System.Nullable`1[System.Boolean] get_SecurityEnabled() +SetMethod : Void set_SecurityEnabled(System.Nullable`1[System.Boolean]) +CustomAttributes : {} + +MemberType : Property +Name : MailEnabled +DeclaringType : Microsoft.Azure.Commands.ActiveDirectory.PSADGroup +ReflectedType : Microsoft.Azure.Commands.ActiveDirectory.PSADGroup +MetadataToken : 385876642 +Module : Microsoft.Azure.PowerShell.Cmdlets.Resources.dll +IsCollectible : False +PropertyType : System.Nullable`1[System.Boolean] +Attributes : None +CanRead : True +CanWrite : True +IsSpecialName : False +GetMethod : System.Nullable`1[System.Boolean] get_MailEnabled() +SetMethod : Void set_MailEnabled(System.Nullable`1[System.Boolean]) +CustomAttributes : {} + +MemberType : Property +Name : MailNickname +DeclaringType : Microsoft.Azure.Commands.ActiveDirectory.PSADGroup +ReflectedType : Microsoft.Azure.Commands.ActiveDirectory.PSADGroup +MetadataToken : 385876643 +Module : Microsoft.Azure.PowerShell.Cmdlets.Resources.dll +IsCollectible : False +PropertyType : System.String +Attributes : None +CanRead : True +CanWrite : True +IsSpecialName : False +GetMethod : System.String get_MailNickname() +SetMethod : Void set_MailNickname(System.String) +CustomAttributes : {} + +MemberType : Property +Name : ObjectType +DeclaringType : Microsoft.Azure.Commands.ActiveDirectory.PSADGroup +ReflectedType : Microsoft.Azure.Commands.ActiveDirectory.PSADGroup +MetadataToken : 385876644 +Module : Microsoft.Azure.PowerShell.Cmdlets.Resources.dll +IsCollectible : False +PropertyType : System.String +Attributes : None +CanRead : True +CanWrite : False +IsSpecialName : False +GetMethod : System.String get_ObjectType() +SetMethod : +CustomAttributes : {} + +MemberType : Property +Name : Description +DeclaringType : Microsoft.Azure.Commands.ActiveDirectory.PSADGroup +ReflectedType : Microsoft.Azure.Commands.ActiveDirectory.PSADGroup +MetadataToken : 385876645 +Module : Microsoft.Azure.PowerShell.Cmdlets.Resources.dll +IsCollectible : False +PropertyType : System.String +Attributes : None +CanRead : True +CanWrite : True +IsSpecialName : False +GetMethod : System.String get_Description() +SetMethod : Void set_Description(System.String) +CustomAttributes : {} + +MemberType : Property +Name : DisplayName +DeclaringType : Microsoft.Azure.Commands.ActiveDirectory.PSADObject +ReflectedType : Microsoft.Azure.Commands.ActiveDirectory.PSADGroup +MetadataToken : 385876650 +Module : Microsoft.Azure.PowerShell.Cmdlets.Resources.dll +IsCollectible : False +PropertyType : System.String +Attributes : None +CanRead : True +CanWrite : True +IsSpecialName : False +GetMethod : System.String get_DisplayName() +SetMethod : Void set_DisplayName(System.String) +CustomAttributes : {} + +MemberType : Property +Name : Id +DeclaringType : Microsoft.Azure.Commands.ActiveDirectory.PSADObject +ReflectedType : Microsoft.Azure.Commands.ActiveDirectory.PSADGroup +MetadataToken : 385876651 +Module : Microsoft.Azure.PowerShell.Cmdlets.Resources.dll +IsCollectible : False +PropertyType : System.String +Attributes : None +CanRead : True +CanWrite : True +IsSpecialName : False +GetMethod : System.String get_Id() +SetMethod : Void set_Id(System.String) +CustomAttributes : {} + +MemberType : Property +Name : Type +DeclaringType : Microsoft.Azure.Commands.ActiveDirectory.PSADObject +ReflectedType : Microsoft.Azure.Commands.ActiveDirectory.PSADGroup +MetadataToken : 385876652 +Module : Microsoft.Azure.PowerShell.Cmdlets.Resources.dll +IsCollectible : False +PropertyType : System.String +Attributes : None +CanRead : True +CanWrite : True +IsSpecialName : False +GetMethod : System.String get_Type() +SetMethod : Void set_Type(System.String) +CustomAttributes : {} + +MemberType : Property +Name : DeletionTimestamp +DeclaringType : Microsoft.Azure.Commands.ActiveDirectory.PSADObject +ReflectedType : Microsoft.Azure.Commands.ActiveDirectory.PSADGroup +MetadataToken : 385876653 +Module : Microsoft.Azure.PowerShell.Cmdlets.Resources.dll +IsCollectible : False +PropertyType : System.Nullable`1[System.DateTime] +Attributes : None +CanRead : True +CanWrite : True +IsSpecialName : False +GetMethod : System.Nullable`1[System.DateTime] get_DeletionTimestamp() +SetMethod : Void set_DeletionTimestamp(System.Nullable`1[System.DateTime]) +CustomAttributes : {} + +MemberType : Property +Name : AdditionalProperties +DeclaringType : Microsoft.Azure.Commands.ActiveDirectory.PSADObject +ReflectedType : Microsoft.Azure.Commands.ActiveDirectory.PSADGroup +MetadataToken : 385876654 +Module : Microsoft.Azure.PowerShell.Cmdlets.Resources.dll +IsCollectible : False +PropertyType : System.Collections.Generic.IDictionary`2[System.String,System.Object] +Attributes : None +CanRead : True +CanWrite : True +IsSpecialName : False +GetMethod : System.Collections.Generic.IDictionary`2[System.String,System.Object] get_AdditionalProperties() +SetMethod : Void set_AdditionalProperties(System.Collections.Generic.IDictionary`2[System.String,System.Object]) +CustomAttributes : {} + +``` |