{"id":6651,"date":"2015-04-15T00:01:00","date_gmt":"2015-04-15T00:01:00","guid":{"rendered":"https:\/\/blogs.technet.microsoft.com\/heyscriptingguy\/2015\/04\/15\/create-custom-type-data-in-powershell-to-format-wmi-display\/"},"modified":"2019-02-18T10:29:53","modified_gmt":"2019-02-18T17:29:53","slug":"create-custom-type-data-in-powershell-to-format-wmi-display","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/scripting\/create-custom-type-data-in-powershell-to-format-wmi-display\/","title":{"rendered":"Create Custom Type Data in PowerShell to Format WMI Display"},"content":{"rendered":"<p><b style=\"font-size:12px\">Summary<\/b><span style=\"font-size:12px\">: Microsoft Scripting Guy, Ed Wilson, talks about creating custom type data to control the way a WMI class displays.<\/span><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/q-for-powertip.jpg\" alt=\"Hey, Scripting Guy! Question\" \/>&nbsp;Hey, Scripting Guy! Yesterday, you said you could create custom type data to control the way the <b>Win32_Volume<\/b> WMI class reports back. How would one go about doing that? I looked on the Internet, and to be honest, it looks like it is basically impossible.<\/p>\n<p>&mdash;AT<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/a-for-powertip.jpg\" alt=\"Hey, Scripting Guy! Answer\" \/>&nbsp;Hello AT,<\/p>\n<p>Microsoft Scripting Guy, Ed Wilson, is here. I love this time of the year. All the windows are open, the azaleas are in bloom, and I am upstairs with my Surface Pro&nbsp;3, a cup of orange-cream green tea, and a slice of artisan cheese. I also scored some organic grapes, and they are so sweet that I needed to add nothing to my tea this morning.<\/p>\n<p>AT, you are right. Yesterday in <a href=\"https:\/\/devblogs.microsoft.com\/scripting\/comparing-cim-and-wmi-in-powershell\/\" target=\"_blank\">Comparing CIM and WMI in PowerShell<\/a>, I began talking about comparing the results of <b>Get-Volume<\/b> with the <b>Win32_Volume<\/b> WMI class.<\/p>\n<p>Obviously, if all of my systems are running Windows 8.1, there is no reason to mess around with using the WMI class. But if that is not the case, it makes sense to make things a bit easier to use.<\/p>\n<h2>Create custom type data<\/h2>\n<p>I want to be able to update the type data for the <b>Win32_Volume<\/b> WMI class. There is no custom type data, so I need to create something. Luckily, beginning with Windows PowerShell&nbsp;3.0, this is super easy. I simply use the <b>Update-TypeData<\/b> cmdlet. The hard parts are figuring out the type name that I am going to use and figuring out how to accomplish the task.<\/p>\n<p>From yesterday&rsquo;s article, we know that the <b>Win32_Volume<\/b> WMI class does not have any custom type data. However, the <b>Win32_Bios<\/b> WMI class does. So I need to see how the <b>Win32_Bios<\/b> WMI class type data is named:<\/p>\n<p style=\"margin-left:30px\">PS C:\\&gt; gcim Win32_BIOS | Get-TypeName<\/p>\n<p style=\"margin-left:30px\">CimInstance#root\/cimv2\/Win32_BIOS<\/p>\n<p style=\"margin-left:30px\">PS C:\\&gt; gwmi win32_bios | Get-TypeName<\/p>\n<p style=\"margin-left:30px\">ManagementObject#root\\cimv2\\Win32_BIOS<\/p>\n<p>But I want the full name, so I use a wildcard character to retrieve it. This is shown here:<\/p>\n<p style=\"margin-left:30px\">PS C:\\&gt; &quot;*win32_bios*&quot; | Get-TypeData | select typename<\/p>\n<p style=\"margin-left:30px\">TypeName<\/p>\n<p style=\"margin-left:30px\">&#8212;&#8212;&#8211;<\/p>\n<p style=\"margin-left:30px\">System.Management.ManagementObject#root\\cimv2\\Win32_BIOS<\/p>\n<p style=\"margin-left:30px\">Microsoft.Management.Infrastructure.CimInstance#root\/cimv2\/Win32_BIOS<\/p>\n<p>It appears that all I need to do is change the name of the WMI class on the end of the string. I decide my new type data name will be the following:<\/p>\n<p style=\"margin-left:30px\">Microsoft.Management.Infrastructure.CimInstance#root\/cimv2\/Win32_Volume<\/p>\n<p>This type data will control the way data returns from the <b>Get-CimInstance<\/b> cmdlet. I am not going to bother to create type data for the <b>Get-WmiObject<\/b> cmdlet, because this methodology requires Windows PowerShell 3.0 or later; therefore, the <b>Get-CimInstance<\/b> cmdlet would be available anyway.<\/p>\n<p>As a test, I decide to create default properties. I use the <b>Update-TypeData<\/b> cmdlet, and I specify the type name and the default properties. I store the type name in a variable named <b>$dataType<\/b>. The second command is one long command. The command is shown here:<\/p>\n<p style=\"margin-left:30px\">$dataType = &quot;Microsoft.Management.Infrastructure.CimInstance#root\/cimv2\/Win32_Volume&quot;<\/p>\n<p style=\"margin-left:30px\">Update-TypeData -TypeName $DataType `<\/p>\n<p style=\"margin-left:30px\">&nbsp;-DefaultDisplayPropertySet DriveLetter, DriveType, Label, FileSystem, FreeSpace, ` Capacity<\/p>\n<p>As shown here, when I use <b>Get-CimInstance<\/b> to query <b>Win32_Volume<\/b>, only the selected properties return:<\/p>\n<p style=\"margin-left:30px\">PS C:\\&gt; Get-CimInstance win32_volume<\/p>\n<p style=\"margin-left:30px\">DriveLetter : C:<\/p>\n<p style=\"margin-left:30px\">DriveType&nbsp;&nbsp; : 3<\/p>\n<p style=\"margin-left:30px\">Label&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : SSD<\/p>\n<p style=\"margin-left:30px\">FileSystem&nbsp; : NTFS<\/p>\n<p style=\"margin-left:30px\">FreeSpace&nbsp;&nbsp; : 53269737472<\/p>\n<p style=\"margin-left:30px\">Capacity&nbsp;&nbsp;&nbsp; : 159486308352<\/p>\n<p style=\"margin-left:30px\">DriveLetter : E:<\/p>\n<p style=\"margin-left:30px\">DriveType&nbsp;&nbsp; : 3<\/p>\n<p style=\"margin-left:30px\">Label&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : HybridTerrabyte<\/p>\n<p style=\"margin-left:30px\">FileSystem&nbsp; : NTFS<\/p>\n<p style=\"margin-left:30px\">FreeSpace&nbsp;&nbsp; : 392849973248<\/p>\n<p style=\"margin-left:30px\">Capacity&nbsp;&nbsp;&nbsp; : 1000068870144<\/p>\n<p style=\"margin-left:30px\">DriveLetter :<\/p>\n<p style=\"margin-left:30px\">DriveType&nbsp;&nbsp; : 3<\/p>\n<p style=\"margin-left:30px\">Label&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Recovery<\/p>\n<p style=\"margin-left:30px\">FileSystem&nbsp; : NTFS<\/p>\n<p style=\"margin-left:30px\">FreeSpace&nbsp;&nbsp; : 24080384<\/p>\n<p style=\"margin-left:30px\">Capacity&nbsp;&nbsp;&nbsp; : 314568704<\/p>\n<p>If I attempt to update the type data, an error occurs. Here is the error message I receive:<\/p>\n<p style=\"margin-left:30px\">PS C:\\&gt; E:\\Data\\ScriptingGuys\\2015\\HSG_4_13_15\\CreateTypeDataForVolumeClass.ps1<\/p>\n<p style=\"margin-left:30px\">Update-TypeData : Error in TypeData<\/p>\n<p style=\"margin-left:30px\">&quot;Microsoft.Management.Infrastructure.CimInstance#root\/cimv2\/Win32_Volume&quot;: The member&nbsp;<span style=\"font-size:12px\">DefaultDisplayPropertySet is already present.<\/span><\/p>\n<p style=\"margin-left:30px\">At E:\\Data\\ScriptingGuys\\2015\\HSG_4_13_15\\CreateTypeDataForVolumeClass.ps1:11 char:1<\/p>\n<p style=\"margin-left:30px\">+ Update-TypeData -TypeName $DataType `<\/p>\n<p style=\"margin-left:30px\">+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<\/p>\n<p style=\"margin-left:30px\">&nbsp;&nbsp;&nbsp; + CategoryInfo&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : InvalidOperation: (:) [Update-TypeData], RuntimeException<\/p>\n<p style=\"margin-left:30px\">&nbsp;&nbsp;&nbsp; + FullyQualifiedErrorId : TypesDynamicUpdateException,Microsoft.PowerShell.Commands.UpdateTypeDataComma<span style=\"font-size:12px\">nd<\/span><\/p>\n<p>I first need to remove the type data, and then I can update it. This command is shown here:<\/p>\n<p style=\"margin-left:30px\">&quot;Microsoft.Management.Infrastructure.CimInstance#root\/cimv2\/Win32_Volume&quot; |<\/p>\n<p style=\"margin-left:30px\">Get-TypeData | Remove-TypeData<\/p>\n<h2>Add a script property<\/h2>\n<p>I see that the output from the drive type is coded. So, I look up the WMI class on MSDN, and add a script property to decode the numeric output. To do this, I use a simple <b>Switch<\/b> statement:<\/p>\n<p style=\"margin-left:30px\">Switch ($this.psbase.CimInstanceProperties[&quot;DriveType&quot;].value)<\/p>\n<p style=\"margin-left:30px\">&nbsp; {<\/p>\n<p style=\"margin-left:30px\">&nbsp;&nbsp; 0 {&quot;Unknown&quot;}<\/p>\n<p style=\"margin-left:30px\">&nbsp;&nbsp; 1 {&quot;No Root&quot;}<\/p>\n<p style=\"margin-left:30px\">&nbsp;&nbsp; 2 {&quot;Removable&quot;}<\/p>\n<p style=\"margin-left:30px\">&nbsp;&nbsp; 3 {&quot;Local Disk&quot;}<\/p>\n<p style=\"margin-left:30px\">&nbsp;&nbsp; 4 {&quot;Network Disk&quot;}<\/p>\n<p style=\"margin-left:30px\">&nbsp;&nbsp; 5 {&quot;Compact Disk&quot;}<\/p>\n<p style=\"margin-left:30px\">&nbsp;&nbsp; 6 {&quot;RAM Disk&quot;}<\/p>\n<p style=\"margin-left:30px\">&nbsp; }<\/p>\n<p>I keep my default property set, and I add a <b>ScriptProperty <\/b>named <b>DriveType<\/b>. The script block for the <b>Switch<\/b> statement and to translate the value goes in the <b>&ndash;Value<\/b> parameter. I use <b>$this<\/b> to gain access to the value from the WMI class property. The revised command is shown here:<\/p>\n<p style=\"margin-left:30px\">$dataType = &quot;Microsoft.Management.Infrastructure.CimInstance#root\/cimv2\/Win32_Volume&quot;<\/p>\n<p style=\"margin-left:30px\">Update-TypeData -TypeName $DataType `<\/p>\n<p style=\"margin-left:30px\">&nbsp;-DefaultDisplayPropertySet DriveLetter, DriveType, Label, FileSystem, FreeSpace, Capacity `<\/p>\n<p style=\"margin-left:30px\">&nbsp;-MemberType ScriptProperty -MemberName DriveType -Value {<\/p>\n<p style=\"margin-left:30px\">&nbsp; Switch ($this.psbase.CimInstanceProperties[&quot;DriveType&quot;].value)<\/p>\n<p style=\"margin-left:30px\">&nbsp; {<\/p>\n<p style=\"margin-left:30px\">&nbsp;&nbsp; 0 {&quot;Unknown&quot;}<\/p>\n<p style=\"margin-left:30px\">&nbsp;&nbsp; 1 {&quot;No Root&quot;}<\/p>\n<p style=\"margin-left:30px\">&nbsp;&nbsp; 2 {&quot;Removable&quot;}<\/p>\n<p style=\"margin-left:30px\">&nbsp;&nbsp; 3 {&quot;Local Disk&quot;}<\/p>\n<p style=\"margin-left:30px\">&nbsp;&nbsp; 4 {&quot;Network Disk&quot;}<\/p>\n<p style=\"margin-left:30px\">&nbsp;&nbsp; 5 {&quot;Compact Disk&quot;}<\/p>\n<p style=\"margin-left:30px\">&nbsp;&nbsp; 6 {&quot;RAM Disk&quot;}<\/p>\n<p style=\"margin-left:30px\">&nbsp; }<\/p>\n<p style=\"margin-left:30px\">&nbsp;}<\/p>\n<p>Now when I use <b>Get-CimInstance<\/b> to query the <b>Win32_Volume<\/b> WMI class, it comes back with nicely formatted output. This is shown in the following image:<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/5008.hsg-4-15-15-01.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/5008.hsg-4-15-15-01.png\" alt=\"Image of command output\" title=\"Image of command output\" \/><\/a><\/p>\n<p><span style=\"font-size:12px\">But it gets better! Because the custom type system works on all instances of the data type, it even works on remote systems. So I update the type data on my local computer, and when I query a remote computer (that has not been updated), the data is properly formatted. It is way cool. This technique is shown here:<\/span><\/p>\n<p style=\"margin-left:30px\">PS C:\\&gt; $dataType = &quot;Microsoft.Management.Infrastructure.CimInstance#root\/cimv2\/Win32<span style=\"font-size:12px\">_Volume&quot;<\/span><\/p>\n<p style=\"margin-left:30px\">PS C:\\&gt; Update-TypeData -TypeName $DataType `<\/p>\n<p style=\"margin-left:30px\">&gt;&gt;&nbsp; -DefaultDisplayPropertySet DriveLetter, DriveType, Label, FileSystem, FreeSpace,&nbsp;<span style=\"font-size:12px\">Capacity `<\/span><\/p>\n<p style=\"margin-left:30px\">&gt;&gt;&nbsp; -MemberType ScriptProperty -MemberName DriveType -Value {<\/p>\n<p style=\"margin-left:30px\">&gt;&gt;&nbsp;&nbsp; Switch ($this.psbase.CimInstanceProperties[&quot;DriveType&quot;].value)<\/p>\n<p style=\"margin-left:30px\">&gt;&gt;&nbsp;&nbsp; {<\/p>\n<p style=\"margin-left:30px\">&gt;&gt;&nbsp;&nbsp;&nbsp; 0 {&quot;Unknown&quot;}<\/p>\n<p style=\"margin-left:30px\">&gt;&gt;&nbsp;&nbsp;&nbsp; 1 {&quot;No Root&quot;}<\/p>\n<p style=\"margin-left:30px\">&gt;&gt;&nbsp;&nbsp;&nbsp; 2 {&quot;Removable&quot;}<\/p>\n<p style=\"margin-left:30px\">&gt;&gt;&nbsp;&nbsp;&nbsp; 3 {&quot;Local Disk&quot;}<\/p>\n<p style=\"margin-left:30px\">&gt;&gt;&nbsp;&nbsp;&nbsp; 4 {&quot;Network Disk&quot;}<\/p>\n<p style=\"margin-left:30px\">&gt;&gt;&nbsp;&nbsp;&nbsp; 5 {&quot;Compact Disk&quot;}<\/p>\n<p style=\"margin-left:30px\">&gt;&gt;&nbsp;&nbsp;&nbsp; 6 {&quot;RAM Disk&quot;}<\/p>\n<p style=\"margin-left:30px\">&gt;&gt;&nbsp;&nbsp; }<\/p>\n<p style=\"margin-left:30px\">&gt;&gt;&nbsp; }<\/p>\n<p style=\"margin-left:30px\">&gt;&gt;&nbsp;<\/p>\n<p style=\"margin-left:30px\">PS C:\\&gt; gcim Win32_Volume<\/p>\n<p style=\"margin-left:30px\">DriveLetter :<\/p>\n<p style=\"margin-left:30px\">DriveType&nbsp;&nbsp; : Local Disk<\/p>\n<p style=\"margin-left:30px\">Label&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : System Reserved<\/p>\n<p style=\"margin-left:30px\">FileSystem&nbsp; : NTFS<\/p>\n<p style=\"margin-left:30px\">FreeSpace&nbsp;&nbsp; : 331784192<\/p>\n<p style=\"margin-left:30px\">Capacity&nbsp;&nbsp;&nbsp; : 366997504<\/p>\n<p style=\"margin-left:30px\">DriveLetter : C:<\/p>\n<p style=\"margin-left:30px\">DriveType&nbsp;&nbsp; : Local Disk<\/p>\n<p style=\"margin-left:30px\">Label&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :<\/p>\n<p style=\"margin-left:30px\">FileSystem&nbsp; : NTFS<\/p>\n<p style=\"margin-left:30px\">FreeSpace&nbsp;&nbsp; : 124714565632<\/p>\n<p style=\"margin-left:30px\">Capacity&nbsp;&nbsp;&nbsp; : 135996108800<\/p>\n<p style=\"margin-left:30px\">DriveLetter : D:<\/p>\n<p style=\"margin-left:30px\">DriveType&nbsp;&nbsp; : Compact Disk<\/p>\n<p style=\"margin-left:30px\">Label&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :<\/p>\n<p style=\"margin-left:30px\">FileSystem&nbsp; :<\/p>\n<p style=\"margin-left:30px\">FreeSpace&nbsp;&nbsp; :<\/p>\n<p style=\"margin-left:30px\">Capacity&nbsp;&nbsp;&nbsp; :<\/p>\n<p style=\"margin-left:30px\">PS C:\\&gt; gcim Win32_Volume -CimSession dc1<\/p>\n<p style=\"margin-left:30px\">DriveLetter&nbsp;&nbsp;&nbsp; : C:<\/p>\n<p style=\"margin-left:30px\">DriveType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Local Disk<\/p>\n<p style=\"margin-left:30px\">Label&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :<\/p>\n<p style=\"margin-left:30px\">FileSystem&nbsp;&nbsp;&nbsp;&nbsp; : NTFS<\/p>\n<p style=\"margin-left:30px\">FreeSpace&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 125529444352<\/p>\n<p style=\"margin-left:30px\">Capacity&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 135810510848<\/p>\n<p style=\"margin-left:30px\">PSComputerName : dc1<\/p>\n<p style=\"margin-left:30px\">DriveLetter&nbsp;&nbsp;&nbsp; :<\/p>\n<p style=\"margin-left:30px\">DriveType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Local Disk<\/p>\n<p style=\"margin-left:30px\">Label&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;: Recovery<\/p>\n<p style=\"margin-left:30px\">FileSystem&nbsp;&nbsp;&nbsp;&nbsp; : NTFS<\/p>\n<p style=\"margin-left:30px\">FreeSpace&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 62734336<\/p>\n<p style=\"margin-left:30px\">Capacity&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 314568704<\/p>\n<p style=\"margin-left:30px\">PSComputerName : dc1<\/p>\n<p style=\"margin-left:30px\">DriveLetter&nbsp;&nbsp;&nbsp; : D:<\/p>\n<p style=\"margin-left:30px\">DriveType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Compact Disk<\/p>\n<p style=\"margin-left:30px\">Label&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :<\/p>\n<p style=\"margin-left:30px\">FileSystem&nbsp;&nbsp;&nbsp;&nbsp; :<\/p>\n<p style=\"margin-left:30px\">FreeSpace&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :<\/p>\n<p style=\"margin-left:30px\">Capacity&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :<\/p>\n<p style=\"margin-left:30px\">PSComputerName : dc1<\/p>\n<p>AT, that is all there is to using Windows PowerShell to create custom type data to control the display of a WMI class. CIM Week will continue tomorrow when I will talk about more cool stuff.<\/p>\n<p>I invite you to follow me on <a href=\"http:\/\/bit.ly\/scriptingguystwitter\" target=\"_blank\">Twitter<\/a> and <a href=\"http:\/\/bit.ly\/scriptingguysfacebook\" target=\"_blank\">Facebook<\/a>. If you have any questions, send email to me at <a href=\"mailto:scripter@microsoft.com\" target=\"_blank\">scripter@microsoft.com<\/a>, or post your questions on the <a href=\"http:\/\/bit.ly\/scriptingforum\" target=\"_blank\">Official Scripting Guys Forum<\/a>. See you tomorrow. Until then, peace.<\/p>\n<p><b>Ed Wilson, Microsoft Scripting Guy<\/b><span style=\"font-size:12px\">&nbsp;<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Summary: Microsoft Scripting Guy, Ed Wilson, talks about creating custom type data to control the way a WMI class displays. &nbsp;Hey, Scripting Guy! Yesterday, you said you could create custom type data to control the way the Win32_Volume WMI class reports back. How would one go about doing that? I looked on the Internet, and [&hellip;]<\/p>\n","protected":false},"author":596,"featured_media":87096,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[385,51,3,4,45],"class_list":["post-6651","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-scripting","tag-cim","tag-getting-started","tag-scripting-guy","tag-scripting-techniques","tag-windows-powershell"],"acf":[],"blog_post_summary":"<p>Summary: Microsoft Scripting Guy, Ed Wilson, talks about creating custom type data to control the way a WMI class displays. &nbsp;Hey, Scripting Guy! Yesterday, you said you could create custom type data to control the way the Win32_Volume WMI class reports back. How would one go about doing that? I looked on the Internet, and [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/posts\/6651","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\/596"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/comments?post=6651"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/posts\/6651\/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=6651"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/categories?post=6651"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/tags?post=6651"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}