{"id":15901,"date":"2011-01-15T00:01:00","date_gmt":"2011-01-15T00:01:00","guid":{"rendered":"https:\/\/blogs.technet.microsoft.com\/heyscriptingguy\/2011\/01\/15\/weekend-scripter-discovering-powershell-cmdlet-parameter-aliases\/"},"modified":"2011-01-15T00:01:00","modified_gmt":"2011-01-15T00:01:00","slug":"weekend-scripter-discovering-powershell-cmdlet-parameter-aliases","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/scripting\/weekend-scripter-discovering-powershell-cmdlet-parameter-aliases\/","title":{"rendered":"Weekend Scripter: Discovering PowerShell Cmdlet Parameter Aliases"},"content":{"rendered":"<p>&nbsp;&nbsp;<\/p>\n<p><b>Summary:<\/b> Increase your Windows PowerShell productivity by unleashing the power of parameter aliases.<\/p>\n<p>&nbsp;<\/p>\n<p>Microsoft Scripting Guy Ed Wilson here. The more I work with <a href=\"http:\/\/technet.microsoft.com\/en-us\/scriptcenter\/powershell.aspx\">Windows PowerShell<\/a> the more I enjoy it. On the other hand, there are still some challenges that need to be met in terms of both discoverability and in usability. Quite frankly, some things are still a bit too hard. For example, one of the cool things about Windows PowerShell is the ability to create aliases. If you do not like the name of a command, you can create an alias and effectively change the name of the command. If you do not like the way a command behaves AND you do not like the name of the command you can create a function, and then create an alias for that function. In short, Windows PowerShell is configurable. <\/p>\n<p>On the other hand, some things are already built into the product but the problem is discovering that the feature exists. An example of this is the parameter aliases. The aliases that are associated with the <a href=\"http:\/\/technet.microsoft.com\/en-us\/library\/dd315352.aspx\">common parameters<\/a> are <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/dd901844(VS.85).aspx\">documented on MSDN<\/a>. Unfortunately, the help <b>About_CommonParameters<\/b> topic that ships with both Windows PowerShell 1.0 and <a href=\"http:\/\/support.microsoft.com\/kb\/968929\">Windows PowerShell 2.0<\/a> does not include the aliases for the common parameters, and the <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/dd878292(VS.85).aspx\">Parameter Aliases topic on MSDN<\/a> talks about creating aliases for Windows PowerShell cmdlet parameters, but it does not list existing aliases. In short, it seems like parameter aliases have fallen through the cracks. The only way I even learned about them was sort of picking them up by osmosis. <\/p>\n<p>I decided to write the following command to produce a listing of Windows PowerShell cmdlets and their associated aliases (it is a single logical command but I broke the command into two lines at the pipe character for display on the blog platform).<\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">gcm -commandtype cmdlet | % {$_.name ; $_.parameters.values | ? { $_.aliases } |<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\"><span>&nbsp;<\/span>ft name, aliases}<\/span><\/p>\n<p>&nbsp;<\/p>\n<p>The <b>GCM<\/b> command is an alias for the <b>Get-Command<\/b> Windows PowerShell cmdlet that is used to retrieve a listing of all the cmdlets that are available in my current Windows PowerShell environment. This value can change depending on which modules or snap-ins are loaded. The percent sign (%) is an alias for the <b>Foreach-Object<\/b> Windows PowerShell cmdlet. Inside the <b>Foreach-Object<\/b> loop, the <b>$_.name<\/b> command displays the name of the Windows PowerShell cmdlet that is currently on the <a href=\"http:\/\/www.microsoft.com\/technet\/scriptcenter\/topics\/winpsh\/manual\/pipe.mspx\">pipeline<\/a>. Next the values of the parameters object are pipelined to the <b>Where-Object<\/b> (the question mark (?) is an alias for the <b>Where-Object<\/b> Windows PowerShell cmdlet). The <b>Where-Object<\/b> Windows PowerShell cmdlet looks for parameter values that are aliases. If the aliases are found, they are pipelined to the <b>Format-Table<\/b> Windows PowerShell cmdlet (<i>ft<\/i> is an alias for <b>Format-Table<\/b>) where only the name of the parameter and the alias of the parameter is displayed. <\/p>\n<p>The results from running the script are displayed in the following figure.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/msdnshared.blob.core.windows.net\/media\/TNBlogsFS\/prod.evol.blogs.technet.com\/CommunityServer.Blogs.Components.WeblogFiles\/00\/00\/00\/76\/18\/8244.WES-1-15-11-01.jpg\" border=\"0\" \/>&nbsp;<\/p>\n<p>The reason the script works is because Windows PowerShell contains an object that is called a <b>cmdletinfo<\/b> object. This is seen here where I use the <b>Get-Command<\/b> Windows PowerShell cmdlet to retrieve the <b>cmdletinfo<\/b> object for the <b>Get-Command<\/b> cmdlet. I pipeline this object to the <b>Get-Member<\/b> Windows PowerShell cmdlet to reveal its members. The results are seen here.<\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">PS C:\\&gt; Get-Command get-command | Get-Member<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">&nbsp;<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">&nbsp;<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\"><span>&nbsp;&nbsp; <\/span>TypeName: System.Management.Automation.CmdletInfo<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">&nbsp;<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">Name<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>MemberType<span>&nbsp;&nbsp;&nbsp;&nbsp; <\/span>Definition<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">&#8212;-<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>&#8212;&#8212;&#8212;-<span>&nbsp;&nbsp;&nbsp;&nbsp; <\/span>&#8212;&#8212;&#8212;-<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">Equals<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>Method<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>bool Equals(System.Object obj)<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">GetHashCode<span>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>Method<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>int GetHashCode()<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">GetType<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>Method<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>type GetType()<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">ToString<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>Method<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>string ToString()<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">CommandType<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>Property<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>System.Management.Automation.CommandTypes Comm&#8230;<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">DefaultParameterSet Property<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>System.String DefaultParameterSet {get;}<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">Definition<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>Property<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>System.String Definition {get;}<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">HelpFile<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>Property<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>System.String HelpFile {get;}<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">ImplementingType<span>&nbsp;&nbsp;&nbsp; <\/span>Property<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>System.Type ImplementingType {get;}<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">Module<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>Property<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>System.Management.Automation.PSModuleInfo Modu&#8230;<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">ModuleName<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>Property<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>System.String ModuleName {get;}<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">Name<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>Property<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>System.String Name {get;}<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">Noun<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>Property<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>System.String Noun {get;}<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">OutputType<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>Property<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>System.Collections.ObjectModel.ReadOnlyCollect&#8230;<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">Parameters<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>Property<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>System.Collections.Generic.Dictionary`2[[Syste&#8230;<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">ParameterSets<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>Property<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>System.Collections.ObjectModel.ReadOnlyCollect&#8230;<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">PSSnapIn<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>Property<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>System.Management.Automation.PSSnapInInfo PSSn&#8230;<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">Verb<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>Property<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>System.String Verb {get;}<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">Visibility<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>Property<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>System.Management.Automation.SessionStateEntry&#8230;<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">DLL <span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>ScriptProperty System.Object DLL {get=$this.ImplementingType&#8230;.<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">HelpUri<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>ScriptProperty System.Object HelpUri {get=try&#8230;<\/span><\/p>\n<p>&nbsp;<\/p>\n<p>I see that there is a parameters property, and therefore I decide to access them directly. This is seen here.<\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">PS C:\\&gt; (gcm get-command).parameters<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">&nbsp;<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">Key<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>Value<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">&#8212;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>&#8212;&#8211;<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">Name<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>System.Management.Automation.Parameter&#8230;<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">Verb<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>System.Management.Automation.Parameter&#8230;<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">Noun<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>System.Management.Automation.Parameter&#8230;<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">Module<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>System.Management.Automation.Parameter&#8230;<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">CommandType<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>System.Management.Automation.Parameter&#8230;<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">TotalCount<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>System.Management.Automation.Parameter&#8230;<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">Syntax<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>System.Management.Automation.Parameter&#8230;<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">ArgumentList<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>System.Management.Automation.Parameter&#8230;<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">Verbose<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>System.Management.Automation.Parameter&#8230;<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">Debug<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>System.Management.Automation.Parameter&#8230;<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">ErrorAction<span>&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>System.Management.Automation.Parameter&#8230;<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">WarningAction<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>System.Management.Automation.Parameter&#8230;<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">ErrorVariable<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>System.Management.Automation.Parameter&#8230;<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">WarningVariable<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>System.Management.Automation.Parameter&#8230;<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">OutVariable<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>System.Management.Automation.Parameter&#8230;<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">OutBuffer<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>System.Management.Automation.Parameter&#8230;<\/span><\/p>\n<p>&nbsp;<\/p>\n<p>At this point in the exercise, I have retrieved the parameters for the <b>Get-Command<\/b> Windows PowerShell cmdlet. The results that are returned are a dictionary object (as evidenced by the key value combinations. I think I would like to see the values. This is seen here.<\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">PS C:\\&gt; (gcm get-command).parameters | % {$_.values}<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">&nbsp;<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">&nbsp;<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">Name<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>: Name<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">ParameterType<span>&nbsp;&nbsp; <\/span>: System.String[]<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">ParameterSets<span>&nbsp;&nbsp; <\/span>: {[AllCommandSet, System.Management.Automation.ParameterSetMetadata<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>]}<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">IsDynamic<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>: False<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">Aliases<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>: {}<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">Attributes<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>: {AllCommandSet, System.Management.Automation.ValidateNotNullOrEmpt<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>yAttribute}<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">SwitchParameter : False<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">&nbsp;<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">Name<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>: Verb<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">ParameterType<span>&nbsp;&nbsp; <\/span>: System.String[]<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">ParameterSets<span>&nbsp;&nbsp; <\/span>: {[CmdletSet, System.Management.Automation.ParameterSetMetadata]}<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">IsDynamic<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>: False<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">Aliases<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>: {}<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">Attributes<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>: {CmdletSet}<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">SwitchParameter : False<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">&nbsp;<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">Name<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>: Noun<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">ParameterType<span>&nbsp;&nbsp; <\/span>: System.String[]<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">ParameterSets<span>&nbsp;&nbsp; <\/span>: {[CmdletSet, System.Management.Automation.ParameterSetMetadata]}<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">IsDynamic<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>: False<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">Aliases<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>: {}<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">Attributes<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>: {CmdletSet}<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">SwitchParameter : False<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">&nbsp;<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">Name<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>: Module<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">ParameterType<span>&nbsp;&nbsp; <\/span>: System.String[]<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">ParameterSets<span>&nbsp;&nbsp; <\/span>: {[__AllParameterSets, System.Management.Automation.ParameterSetMet<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>adata]}<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">IsDynamic<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>: False<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">Aliases<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>: {PSSnapin}<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">Attributes<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>: {System.Management.Automation.AliasAttribute, __AllParameterSets}<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">SwitchParameter : False<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">&nbsp;<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">Name<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>: CommandType<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">ParameterType<span>&nbsp;&nbsp; <\/span>: System.Management.Automation.CommandTypes<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">ParameterSets<span>&nbsp;&nbsp; <\/span>: {[AllCommandSet, System.Management.Automation.ParameterSetMetadata<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>]}<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">IsDynamic<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>: False<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">Aliases<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>: {Type}<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">Attributes<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>: {System.Management.Automation.AliasAttribute, AllCommandSet}<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">SwitchParameter : False<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">&lt;output truncated&gt;<\/span><\/p>\n<p>&nbsp;<\/p>\n<p>From this output, I can see that some of the parameters do not have aliases (<i>name, verb, noun<\/i>) but that some of the parameters do have aliases (<i>module<\/i> and <i>commandtype<\/i>). I was able to use the information I discovered at this point to write my command to obtain all of the aliases for each of the Windows PowerShell cmdlets. However, you might be interested in seeing the type of object that the above code is working with. It is called a <b>ParameterSetMetadata<\/b> object, and it is shown here.<\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">PS C:\\&gt; (gcm get-command).parameters | % {$_.values | gm}<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">&nbsp;<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">&nbsp;<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\"><span>&nbsp;&nbsp; <\/span>TypeName: System.Management.Automation.ParameterMetadata<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">&nbsp;<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">Name<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>MemberType Definition<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">&#8212;-<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>&#8212;&#8212;&#8212;- &#8212;&#8212;&#8212;-<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">Equals<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>Method<span>&nbsp;&nbsp;&nbsp;&nbsp; <\/span>bool Equals(System.Object obj)<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">GetHashCode<span>&nbsp;&nbsp;&nbsp;&nbsp; <\/span>Method<span>&nbsp;&nbsp;&nbsp;&nbsp; <\/span>int GetHashCode()<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">GetType<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>Method<span>&nbsp;&nbsp;&nbsp;&nbsp; <\/span>type GetType()<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">ToString<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>Method<span>&nbsp;&nbsp;&nbsp;&nbsp; <\/span>string ToString()<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">Aliases<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>Property<span>&nbsp;&nbsp; <\/span>System.Collections.ObjectModel.Collection`1[[System.St&#8230;<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">Attributes<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>Property<span>&nbsp;&nbsp; <\/span>System.Collections.ObjectModel.Collection`1[[System.At&#8230;<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">IsDynamic<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>Property<span>&nbsp;&nbsp; <\/span>System.Boolean IsDynamic {get;set;}<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">Name<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>Property<span>&nbsp;&nbsp; <\/span>System.String Name {get;set;}<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">ParameterSets<span>&nbsp;&nbsp; <\/span>Property<span>&nbsp;&nbsp; <\/span>System.Collections.Generic.Dictionary`2[[System.String&#8230;<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">ParameterType<span>&nbsp;&nbsp; <\/span>Property<span>&nbsp;&nbsp; <\/span>System.Type ParameterType {get;set;}<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">SwitchParameter Property<span>&nbsp;&nbsp; <\/span>System.Boolean SwitchParameter {get;}<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">&nbsp;<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">&nbsp;<\/span><\/p>\n<p style=\"margin-left: 0.5in\"><span style=\"font-family: courier new,courier\">PS C:\\&gt;<\/span><\/p>\n<p>&nbsp;<\/p>\n<p>One thing I should mention, is that even though two Windows PowerShell cmdlets may contain the same parameter, it does not mean that that both cmdlets will use the same parameter alias. This is the value of the list. <\/p>\n<p>I invite you to follow me on <a target=\"_blank\" href=\"http:\/\/bit.ly\/scriptingguystwitter\">Twitter<\/a> or <a href=\"http:\/\/bit.ly\/scriptingguysfacebook\">Facebook<\/a>. If you have any questions, send email to me at <a target=\"_blank\" href=\"mailto:scripter@microsoft.com\">scripter@microsoft.com<\/a> or post them on the <a href=\"http:\/\/social.technet.microsoft.com\/Forums\/en\/ITCG\/threads\/\">Official Scripting Guys Forum<\/a>. See you tomorrow. Until then, peace.<\/p>\n<p>&nbsp;<\/p>\n<p><b>Ed Wilson, Microsoft Scripting Guy<\/b><\/p>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp;&nbsp; Summary: Increase your Windows PowerShell productivity by unleashing the power of parameter aliases. &nbsp; Microsoft Scripting Guy Ed Wilson here. The more I work with Windows PowerShell the more I enjoy it. On the other hand, there are still some challenges that need to be met in terms of both discoverability and in usability. [&hellip;]<\/p>\n","protected":false},"author":595,"featured_media":87096,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[51,3,4,61,45],"class_list":["post-15901","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-scripting","tag-getting-started","tag-scripting-guy","tag-scripting-techniques","tag-weekend-scripter","tag-windows-powershell"],"acf":[],"blog_post_summary":"<p>&nbsp;&nbsp; Summary: Increase your Windows PowerShell productivity by unleashing the power of parameter aliases. &nbsp; Microsoft Scripting Guy Ed Wilson here. The more I work with Windows PowerShell the more I enjoy it. On the other hand, there are still some challenges that need to be met in terms of both discoverability and in usability. [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/posts\/15901","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/users\/595"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/comments?post=15901"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/posts\/15901\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/media\/87096"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/media?parent=15901"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/categories?post=15901"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/tags?post=15901"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}