{"id":4618,"date":"2012-11-23T00:01:00","date_gmt":"2012-11-23T00:01:00","guid":{"rendered":"https:\/\/blogs.technet.microsoft.com\/heyscriptingguy\/2012\/11\/23\/exploring-the-powershell-psdiagnostics-module\/"},"modified":"2012-11-23T00:01:00","modified_gmt":"2012-11-23T00:01:00","slug":"exploring-the-powershell-psdiagnostics-module","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/scripting\/exploring-the-powershell-psdiagnostics-module\/","title":{"rendered":"Exploring the PowerShell PSDiagnostics Module"},"content":{"rendered":"<p><strong>Summary:<\/strong> Microsoft Scripting Guy, Ed Wilson, talks about exploring the Windows PowerShell PSDiagnostics module.<\/p>\n<p>Microsoft Scripting Guy, Ed Wilson, is here. Let&rsquo;s see, so today is November 23, 2012, which means that the Scripting Wife and I are in The Netherlands, and today, we are at the day-long <a href=\"http:\/\/www.dupsug.com\/?page_id=65\" target=\"_blank\">Dutch PowerShell Group meeting<\/a>. We get to see Jeff Wouters (yesterday&rsquo;s guest on the Hey, Scripting Guy! Blog) and Stefan Stranger, who is a Microsoft PFE, as well as dozens of other way-cool Windows PowerShell people.<\/p>\n<h2>A quick look at the PSDiagnostics module<\/h2>\n<p>The PSDiagnostics module contains 10 functions that are useful when it comes to troubleshooting Windows PowerShell. To see the functions, use the <strong>Get-Command<\/strong> cmdlet, as shown here.<\/p>\n<p style=\"padding-left: 30px\">PS C:\\&gt; gcm -module psdiagnostics<\/p>\n<p style=\"padding-left: 30px\">CommandType&nbsp;&nbsp;&nbsp;&nbsp; Name&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ModuleName<\/p>\n<p style=\"padding-left: 30px\">&#8212;&#8212;&#8212;&#8211;&nbsp;&nbsp;&nbsp;&nbsp; &#8212;-&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8212;&#8212;&#8212;-<\/p>\n<p style=\"padding-left: 30px\">Function&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Disable-PSTrace&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; PSDiagnostics<\/p>\n<p style=\"padding-left: 30px\">Function&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Disable-PSWSManCombinedTrace&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PSDiagnostics<\/p>\n<p style=\"padding-left: 30px\">Function&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Disable-WSManTrace&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;PSDiagnostics<\/p>\n<p style=\"padding-left: 30px\">Function&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Enable-PSTrace&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; PSDiagnostics<\/p>\n<p style=\"padding-left: 30px\">Function&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Enable-PSWSManCombinedTrace&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PSDiagnostics<\/p>\n<p style=\"padding-left: 30px\">Function&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Enable-WSManTrace&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; PSDiagnostics<\/p>\n<p style=\"padding-left: 30px\">Function&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Get-LogProperties&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; PSDiagnostics<\/p>\n<p style=\"padding-left: 30px\">Function&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set-LogProperties&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; PSDiagnostics<\/p>\n<p style=\"padding-left: 30px\">Function&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Start-Trace&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;PSDiagnostics<\/p>\n<p style=\"padding-left: 30px\">Function&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Stop-Trace&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;&nbsp; PSDiagnostics<\/p>\n<p>Unfortunately, there is absolutely no Help whatsoever when it comes to the PSDiagnostics module. This means that we are pretty much left to guess what it does and how it might be useful. So, what do the PSDiagnostics functions do? Typically, the way to find out about a function is to use <strong>Get-Help<\/strong>. Here is the output from <strong>Get-Help<\/strong> for the <strong>Enable-PSTrace<\/strong> function.<\/p>\n<p style=\"padding-left: 30px\">PS C:\\&gt; help Enable-PSTrace<\/p>\n<p style=\"padding-left: 30px\">NAME<\/p>\n<p style=\"padding-left: 30px\">&nbsp;&nbsp;&nbsp; Enable-PSTrace<\/p>\n<p style=\"padding-left: 30px\">SYNTAX<\/p>\n<p style=\"padding-left: 30px\">&nbsp;&nbsp;&nbsp; Enable-PSTrace [-Force] [-AnalyticOnly]<\/p>\n<p style=\"padding-left: 30px\">ALIASES<\/p>\n<p style=\"padding-left: 30px\">&nbsp;&nbsp;&nbsp; None<\/p>\n<p style=\"padding-left: 30px\">REMARKS<\/p>\n<p style=\"padding-left: 30px\">&nbsp;&nbsp;&nbsp; None<\/p>\n<p>Hmm &hellip; that is not too enlightening. Well, one thing that is cool about Windows PowerShell functions is that there is a Function: PowerShell drive. Because, there is a Function: PowerShell drive, it means I can easily look at the content of a function to get a better idea of what it does. This is shown here.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/5483.hsg-11-23-12-01.png\"><img decoding=\"async\" title=\"Image of command output\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/5483.hsg-11-23-12-01.png\" alt=\"Image of command output\" \/><\/a><\/p>\n<p>What does the <strong>Enable-PSTrace<\/strong> function do? Well, it calls the <strong>Set-LogProperties<\/strong> function and passes either the Windows PowerShell analytic logs or the analytic and the debug logs so they can be enabled. So, we need to look at the <strong>Set-LogProperties<\/strong> function and see what it does. This is shown here.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/6560.hsg-11-23-12-02.png\"><img decoding=\"async\" title=\"Image of command output\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/6560.hsg-11-23-12-02.png\" alt=\"Image of command output\" \/><\/a><\/p>\n<p>The <strong>Set-LogProperties<\/strong> function is a bit longer, but one thing is clear&mdash;it calls Wevtutil and will enable the logs. From looking at it, it will also set backup, maximum log size, and other things as well.<\/p>\n<p><strong>Note<\/strong>&nbsp;&nbsp; I wrote a couple of Hey, Scripting Guy! Blog posts that talked about using Wevtutil last year. One post was <a href=\"http:\/\/blogs.technet.com\/b\/heyscriptingguy\/archive\/2011\/07\/14\/automatically-enable-and-disable-trace-logs-using-powershell.aspx\" target=\"_blank\">Automatically Enable and Disable Trace Logs using PowerShell<\/a> and the other was <a href=\"http:\/\/blogs.technet.com\/b\/heyscriptingguy\/archive\/2011\/07\/15\/use-powershell-to-clear-all-logs.aspx\" target=\"_blank\">Use PowerShell to Clear All Logs<\/a><em>. <\/em><\/p>\n<p>The <strong>Get-LogProperties<\/strong> function displays information about various diagnostic logs. It works as shown here.<\/p>\n<p style=\"padding-left: 30px\">PS C:\\&gt; Get-LogProperties Microsoft-Windows-PowerShell\/Admin<\/p>\n<p style=\"padding-left: 30px\">Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Microsoft-Windows-PowerShell\/Admin<\/p>\n<p style=\"padding-left: 30px\">Enabled&nbsp;&nbsp;&nbsp; : True<\/p>\n<p style=\"padding-left: 30px\">Type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Admin<\/p>\n<p style=\"padding-left: 30px\">Retention&nbsp; : True<\/p>\n<p style=\"padding-left: 30px\">AutoBackup : False<\/p>\n<p style=\"padding-left: 30px\">MaxLogSize : 1048985600<\/p>\n<p>Unfortunately, it does not accept wild cards, and when receiving wild cards in a log name, it paints the screen red, as shown here.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/8372.hsg-11-23-12-03.png\"><img decoding=\"async\" title=\"Image of command output\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/8372.hsg-11-23-12-03.png\" alt=\"Image of command output\" \/><\/a><\/p>\n<p>Of course, I can obtain the log names from the Event Viewer utility. All I need to do is to right-click the log, select Properties, and I can cut and paste the log name. The property page is shown here.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/7181.hsg-11-23-12-04.png\"><img decoding=\"async\" title=\"Image of Log Properties dialog box\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/7181.hsg-11-23-12-04.png\" alt=\"Image of Log Properties dialog box\" \/><\/a><\/p>\n<p>But, dude, this is Windows PowerShell. And with Windows PowerShell, I do not need to supply cryptic, long, convoluted log path names because I can use the <strong>Get-WinEvent<\/strong> cmdlet to find my Windows PowerShell log names, and then I can pass the information to the <strong>Get-LogProperties<\/strong> function. This is shown here.<\/p>\n<p style=\"padding-left: 30px\">PS C:\\&gt; Get-WinEvent -ListLog *powershell* | Foreach {Get-LogProperties $_.logname}<\/p>\n<p style=\"padding-left: 30px\">Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Windows PowerShell<\/p>\n<p style=\"padding-left: 30px\">Enabled&nbsp;&nbsp;&nbsp; : True<\/p>\n<p style=\"padding-left: 30px\">Type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Admin<\/p>\n<p style=\"padding-left: 30px\">Retention&nbsp; : False<\/p>\n<p style=\"padding-left: 30px\">AutoBackup : False<\/p>\n<p style=\"padding-left: 30px\">MaxLogSize : 15728640<\/p>\n<p style=\"padding-left: 30px\">&nbsp;<\/p>\n<p style=\"padding-left: 30px\">Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Microsoft-Windows-PowerShell\/Admin<\/p>\n<p style=\"padding-left: 30px\">Enabled&nbsp;&nbsp;&nbsp; : True<\/p>\n<p style=\"padding-left: 30px\">Type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Admin<\/p>\n<p style=\"padding-left: 30px\">Retention&nbsp; : True<\/p>\n<p style=\"padding-left: 30px\">AutoBackup : False<\/p>\n<p style=\"padding-left: 30px\">MaxLogSize : 1048985600<\/p>\n<p style=\"padding-left: 30px\">&nbsp;<\/p>\n<p style=\"padding-left: 30px\">Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Microsoft-Windows-PowerShell\/Operational<\/p>\n<p style=\"padding-left: 30px\">Enabled&nbsp;&nbsp;&nbsp; : True<\/p>\n<p style=\"padding-left: 30px\">Type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Operational<\/p>\n<p style=\"padding-left: 30px\">Retention&nbsp; : False<\/p>\n<p style=\"padding-left: 30px\">AutoBackup : False<\/p>\n<p style=\"padding-left: 30px\">MaxLogSize : 15728640<\/p>\n<p>If I want to look at only one log, I use the <strong>Where-Object<\/strong> to filter out the results. This is shown here.<\/p>\n<p style=\"padding-left: 30px\">PS C:\\&gt; Get-WinEvent -ListLog *powershell* | where logname -match admin | %{Get-LogPr<\/p>\n<p style=\"padding-left: 30px\">operties $_.logname}<\/p>\n<p style=\"padding-left: 30px\">Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Microsoft-Windows-PowerShell\/Admin<\/p>\n<p style=\"padding-left: 30px\">Enabled&nbsp;&nbsp;&nbsp; : True<\/p>\n<p style=\"padding-left: 30px\">Type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Admin<\/p>\n<p style=\"padding-left: 30px\">Retention&nbsp; : True<\/p>\n<p style=\"padding-left: 30px\">AutoBackup : False<\/p>\n<p style=\"padding-left: 30px\">MaxLogSize : 1048985600<\/p>\n<p>If you are wondering why I use the <strong>Get-LogProperties<\/strong> function instead of the <strong>Get-WinEvent<\/strong> cmdlet, here is the output from <strong>Get-Winevent<\/strong>.<\/p>\n<p style=\"padding-left: 30px\">PS C:\\&gt; Get-WinEvent -ListLog *powershell* | where logname -match admin<\/p>\n<p style=\"padding-left: 30px\">LogMode&nbsp;&nbsp; MaximumSizeInBytes RecordCount LogName<\/p>\n<p style=\"padding-left: 30px\">&#8212;&#8212;-&nbsp;&nbsp; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212; &#8212;&#8212;&#8212;&#8211; &#8212;&#8212;-<\/p>\n<p style=\"padding-left: 30px\">Retain&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1048985600&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 Microsoft-Windows-PowerShell\/Admin<\/p>\n<p>I see that both tell me the retention method and the maximum log size. But the <strong>Get-LogProperties<\/strong> function also tells me if the log is enabled, and if it has autobackup set.<\/p>\n<p>Join me tomorrow when I will talk some more about using the functions from the PSDiagnostics module.<\/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><strong>Ed Wilson, Microsoft Scripting Guy<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Summary: Microsoft Scripting Guy, Ed Wilson, talks about exploring the Windows PowerShell PSDiagnostics module. Microsoft Scripting Guy, Ed Wilson, is here. Let&rsquo;s see, so today is November 23, 2012, which means that the Scripting Wife and I are in The Netherlands, and today, we are at the day-long Dutch PowerShell Group meeting. We get to [&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":[294,3,4,45],"class_list":["post-4618","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-scripting","tag-debugging","tag-scripting-guy","tag-scripting-techniques","tag-windows-powershell"],"acf":[],"blog_post_summary":"<p>Summary: Microsoft Scripting Guy, Ed Wilson, talks about exploring the Windows PowerShell PSDiagnostics module. Microsoft Scripting Guy, Ed Wilson, is here. Let&rsquo;s see, so today is November 23, 2012, which means that the Scripting Wife and I are in The Netherlands, and today, we are at the day-long Dutch PowerShell Group meeting. We get to [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/posts\/4618","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=4618"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/posts\/4618\/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=4618"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/categories?post=4618"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/tags?post=4618"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}