{"id":17221,"date":"2010-09-04T00:01:00","date_gmt":"2010-09-04T00:01:00","guid":{"rendered":"https:\/\/blogs.technet.microsoft.com\/heyscriptingguy\/2010\/09\/04\/adding-custom-menu-items-to-the-windows-powershell-ise\/"},"modified":"2010-09-04T00:01:00","modified_gmt":"2010-09-04T00:01:00","slug":"adding-custom-menu-items-to-the-windows-powershell-ise","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/scripting\/adding-custom-menu-items-to-the-windows-powershell-ise\/","title":{"rendered":"Adding Custom Menu Items to the Windows PowerShell ISE"},"content":{"rendered":"<p><strong>Summary<\/strong>: Microsoft Scripting Guy Ed Wilson provides step-by-step instructions for adding custom menu items to the Windows PowerShell ISE.<\/p>\n<p>&nbsp;<\/p>\n<p>Microsoft Scripting Guy Ed Wilson here. A long long long long time ago in a far far far far away land, I used to write code in a language called <a href=\"http:\/\/www.microsoft.com\/downloads\/details.aspx?displaylang=en&amp;FamilyID=1A24B2A7-31AE-4B7C-A377-45A8E2C70AB2\">WordBasic<\/a>. Using Word Basic I could completely automate <a href=\"http:\/\/en.wikipedia.org\/wiki\/Microsoft_Word\">Microsoft Word<\/a>, and in so doing I wrote several mission-critical applications that were used by the company where I was employed. Because I was doing a lot of Word development, I had the most tricked-out version of Microsoft Word you ever saw. I do not think anything was left untouched, nor did any default setting escape unscathed. I had custom menus for everything, and custom bits of code that ran when I pressed specific keystroke combinations. It was cool! <\/p>\n<p>Of course, I used to customize Windows 3.1 as well. I would record special sounds and attach them to various Windows events and the like. These days, my life is rather boring, and if I change the wallpaper on my 64-bit Windows 7 Ultimate desktop, I am doing something exotic. Perhaps I have grown jaded in my access to computing power, or become complacent with the Windows defaults. Maybe it is the difficulty in changing things back to the default Windows configuration so I can take screenshots for the books I write. I do not mind taking screenshots for books because pictures make the book easier to read. However, I loathe retaking screenshots. In fact, I hate rework of all kinds. One of the things that Microsoft Press is really a stickler on is a &ldquo;default configuration,&rdquo; so if I happen to have a cute fuzzy koala bear picture I took while I was in Australia as my background, such as the one shown in the following image, I will be in for some rework. <\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/6787.WES09041001_7A4BEA60.jpg\"><img decoding=\"async\" height=\"391\" width=\"254\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/0116.WES09041001_thumb_17DDC560.jpg\" alt=\"Photo Ed took of fuzzy koala bear\" border=\"0\" title=\"Photo Ed took of fuzzy koala bear\" style=\"border-bottom: 0px;border-left: 0px;padding-left: 0px;padding-right: 0px;border-top: 0px;border-right: 0px;padding-top: 0px\" \/><\/a><\/p>\n<p>With the Windows PowerShell ISE, I am starting to get back into the &ldquo;fun mode&rdquo; of scripting and customization. The fact I can add custom menus and assign shortcut keys to menu items means that the Windows PowerShell ISE is highly customizable. And it offers a &ldquo;tweak geek&rdquo; myriad opportunities for self-expression. <\/p>\n<p>The Add-MenuItems.ps1 script adds several menu items to the Windows PowerShell ISE. It adds a submenu item that restores all defaults for the Windows PowerShell ISE, as well as one that only restores the token color defaults. In addition, two other submenus are added, both of which run scripts. The first one runs the <a href=\"http:\/\/blogs.technet.com\/b\/heyscriptingguy\/archive\/2010\/08\/22\/changing-the-fonts-used-by-the-windows-powershell-ise.aspx\">Get-PsISEFonts.ps1 script<\/a>, and the second menu item runs the <a href=\"http:\/\/blogs.technet.com\/b\/heyscriptingguy\/archive\/2010\/08\/28\/change-colors-used-by-the-windows-powershell-ise.aspx\">Get-PSIseColorValues.ps1script<\/a>. <\/p>\n<p>A third script is available as a menu item that runs the <a href=\"http:\/\/blogs.technet.com\/b\/heyscriptingguy\/archive\/2010\/08\/29\/customize-colors-and-fonts-in-the-windows-powershell-ise.aspx\">Set-IseColorsAndFonts.ps1 script<\/a>. <\/p>\n<p>One last menu item runs a command to remove the menu items from the Windows PowerShell ISE. Keep in mind that the three scripts that are run use a hard-coded path, so you will need to modify it to fit your particular environment. The complete Add-MenuItems.ps1 script is seen here.<\/p>\n<blockquote>\n<p><strong>Add-MenuItems.ps1<\/strong><\/p>\n<p><span style=\"color: #2b91af\">$RestoreRoot<\/span><span style=\"color: #808080\">&nbsp;<\/span><span style=\"color: #0000ff\">=<\/span><span style=\"color: #808080\">&nbsp;<\/span><span style=\"color: #2b91af\">$psISE<\/span><span style=\"color: #000000\">.CurrentPowerShellTab.AddOnsMenu.Submenus.Add(<\/span><span style=\"color: #808080\"> <br \/>&nbsp;&nbsp; &#8220;Restore&#8221;<\/span><span style=\"color: #000000\">,<\/span><span style=\"color: #2b91af\">$null<\/span><span style=\"color: #000000\">,<\/span><span style=\"color: #2b91af\">$null<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #808080\"> <br \/><\/span><span style=\"color: #2b91af\">$RestoreRoot<\/span><span style=\"color: #000000\">.Submenus.Add(<\/span><span style=\"color: #808080\">&#8220;RestoreALLDefaults&#8221;<\/span><span style=\"color: #000000\">,<\/span><span style=\"color: #808080\">&nbsp; <br \/>&nbsp;<\/span><span style=\"color: #000000\">{<\/span><span style=\"color: #2b91af\">$psISE<\/span><span style=\"color: #000000\">.Options.RestoreDefaults()},<\/span><span style=\"color: #808080\"> &#8220;Ctrl+Alt+R&#8221;<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #808080\"> <br \/><\/span><span style=\"color: #2b91af\">$RestoreRoot<\/span><span style=\"color: #000000\">.SubMenus.Add(<\/span><span style=\"color: #808080\">&#8220;RestoreTokenColorDefaults&#8221;<\/span><span style=\"color: #000000\">,<\/span><span style=\"color: #808080\">&nbsp; <br \/>&nbsp;<\/span><span style=\"color: #000000\">{<\/span><span style=\"color: #2b91af\">$psISE<\/span><span style=\"color: #000000\">.Options.RestoreDefaultTokenColors()},<\/span><span style=\"color: #808080\"> &#8220;Ctrl+Alt+T&#8221;<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #808080\"> <\/p>\n<p><\/span><span style=\"color: #2b91af\">$GetOptions<\/span><span style=\"color: #808080\">&nbsp;<\/span><span style=\"color: #0000ff\">=<\/span><span style=\"color: #808080\">&nbsp;<\/span><span style=\"color: #2b91af\">$psISE<\/span><span style=\"color: #000000\">.CurrentPowerShellTab.AddOnsMenu.Submenus.Add(<\/span><span style=\"color: #808080\"> <br \/>&nbsp;&nbsp; &#8220;GetOptions&#8221;<\/span><span style=\"color: #000000\">,<\/span><span style=\"color: #2b91af\">$null<\/span><span style=\"color: #000000\">,<\/span><span style=\"color: #2b91af\">$null<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #808080\"> <br \/><\/span><span style=\"color: #2b91af\">$GetOptions<\/span><span style=\"color: #000000\">.SubMenus.Add(<\/span><span style=\"color: #808080\">&#8220;GetFonts&#8221;<\/span><span style=\"color: #000000\">,<\/span><span style=\"color: #808080\">&nbsp;<\/span><span style=\"color: #000000\">{<\/span><span style=\"color: #808080\">&nbsp;<\/span><span style=\"color: #000000\">C:\\fso\\Get-PsISEfonts.ps1<\/span><span style=\"color: #808080\">&nbsp;<\/span><span style=\"color: #000000\">}<\/span><span style=\"color: #808080\">&nbsp;<\/span><span style=\"color: #000000\">,<\/span><span style=\"color: #808080\">&nbsp;<\/span><span style=\"color: #2b91af\">$null<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #808080\"> <br \/><\/span><span style=\"color: #2b91af\">$GetOptions<\/span><span style=\"color: #000000\">.SubMenus.Add(<\/span><span style=\"color: #808080\">&#8220;GetColors&#8221;<\/span><span style=\"color: #000000\">,<\/span><span style=\"color: #808080\">&nbsp;<\/span><span style=\"color: #000000\">{<\/span><span style=\"color: #808080\">&nbsp;<\/span><span style=\"color: #000000\">C:\\fso\\Get-PsIseColorValues.ps1<\/span><span style=\"color: #808080\">&nbsp;<\/span><span style=\"color: #000000\">}<\/span><span style=\"color: #808080\">&nbsp;<\/span><span style=\"color: #000000\">,<\/span><span style=\"color: #808080\">&nbsp;<\/span><span style=\"color: #2b91af\">$null<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #808080\"> <\/p>\n<p><\/span><span style=\"color: #2b91af\">$psISE<\/span><span style=\"color: #000000\">.CurrentPowerShellTab.AddOnsMenu.Submenus.Add(<\/span><span style=\"color: #808080\"> <br \/>&nbsp;&nbsp; &#8220;MyCustomISE&#8221;<\/span><span style=\"color: #000000\">,<\/span><span style=\"color: #808080\">&nbsp;<\/span><span style=\"color: #000000\">{<\/span><span style=\"color: #808080\">&nbsp;<\/span><span style=\"color: #000000\">C:\\fso\\Set-PsISEcolorsAndFonts.ps1<\/span><span style=\"color: #808080\">&nbsp;<\/span><span style=\"color: #000000\">},<\/span><span style=\"color: #2b91af\">$null<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #808080\"> <\/p>\n<p><\/span><span style=\"color: #2b91af\">$psISE<\/span><span style=\"color: #000000\">.CurrentPowerShellTab.AddOnsMenu.Submenus.Add(<\/span><span style=\"color: #808080\">&#8220;ClearMenu&#8221;<\/span><span style=\"color: #000000\">,<\/span><span style=\"color: #808080\">&nbsp; <br \/>&nbsp;&nbsp; <\/span><span style=\"color: #000000\">{<\/span><span style=\"color: #808080\">&nbsp;<\/span><span style=\"color: #2b91af\">$psISE<\/span><span style=\"color: #000000\">.CurrentPowerShellTab.AddOnsMenu.Submenus.<\/span><span style=\"color: #0000ff\">Clear<\/span><span style=\"color: #000000\">()<\/span><span style=\"color: #808080\">&nbsp;<\/span><span style=\"color: #000000\">},<\/span><span style=\"color: #808080\">&nbsp;<\/span><span style=\"color: #2b91af\">$null<\/span><span style=\"color: #000000\">)<\/span> <\/p>\n<p>&nbsp;<\/p>\n<\/blockquote>\n<p>When the Add-MenuItems.ps1 script runs, it creates a new top-level menu named <strong>Add-ons<\/strong>, and the additional menu items and submenu items. <\/p>\n<p>The <strong>Restore<\/strong> menu consists of two submenu items. The first runs the <strong>RestoreAllDefaults<\/strong> command, and the second runs the <strong>RestoreTokenColorDefaults<\/strong> command. To access the <strong>AddOnsMenu<\/strong>, use the <strong>currentPowerShellTab<\/strong> property of the <strong>$psISE <\/strong>automatic variable. From the <strong>AddOnsMenu<\/strong> property, choose the <strong>Submenus<\/strong> property and call the <strong>Add<\/strong> method. It accepts three parameters. The first parameter is the name of the menu item. The second parameter is a script block that can run any Windows PowerShell command or call any Windows PowerShell script you wish to use. The third parameter is the keyboard shortcut. If you do not wish to specify a value for the parameter, you cannot leave it empty; therefore use the <strong>$null<\/strong> automatic variable. The code to create the <strong>Restore<\/strong> menu and its two submenus is shown here: <\/p>\n<blockquote>\n<div class=\"code\"><span style=\"color: #2b91af\">$RestoreRoot<\/span><span style=\"color: #808080\">&nbsp;<\/span><span style=\"color: #0000ff\">=<\/span><span style=\"color: #808080\">&nbsp;<\/span><span style=\"color: #2b91af\">$psISE<\/span><span style=\"color: #000000\">.CurrentPowerShellTab.AddOnsMenu.Submenus.Add(<\/span><span style=\"color: #808080\"> <br \/>&nbsp;&nbsp; &#8220;Restore&#8221;<\/span><span style=\"color: #000000\">,<\/span><span style=\"color: #2b91af\">$null<\/span><span style=\"color: #000000\">,<\/span><span style=\"color: #2b91af\">$null<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #808080\"> <br \/><\/span><span style=\"color: #2b91af\">$RestoreRoot<\/span><span style=\"color: #000000\">.Submenus.Add(<\/span><span style=\"color: #808080\">&#8220;RestoreALLDefaults&#8221;<\/span><span style=\"color: #000000\">,<\/span><span style=\"color: #808080\">&nbsp; <br \/>&nbsp;<\/span><span style=\"color: #000000\">{<\/span><span style=\"color: #2b91af\">$psISE<\/span><span style=\"color: #000000\">.Options.RestoreDefaults()},<\/span><span style=\"color: #808080\"> &#8220;Ctrl+Alt+R&#8221;<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #808080\"> <br \/><\/span><span style=\"color: #2b91af\">$RestoreRoot<\/span><span style=\"color: #000000\">.SubMenus.Add(<\/span><span style=\"color: #808080\">&#8220;RestoreTokenColorDefaults&#8221;<\/span><span style=\"color: #000000\">,<\/span><span style=\"color: #808080\">&nbsp; <br \/>&nbsp;<\/span><span style=\"color: #000000\">{<\/span><span style=\"color: #2b91af\">$psISE<\/span><span style=\"color: #000000\">.Options.RestoreDefaultTokenColors()},<\/span><span style=\"color: #808080\"> &#8220;Ctrl+Alt+T&#8221;<\/span><span style=\"color: #000000\">)<\/span> <\/div>\n<\/blockquote>\n<p>This portion of the code creates the <strong>Restore<\/strong> menu item, as well as the two submenus shown in the following image.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/2570.WES09041002_41DDC388.jpg\"><img decoding=\"async\" height=\"88\" width=\"304\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/4743.WES09041002_thumb_162CF98C.jpg\" alt=\"Image of Restore menu and its two submenus\" border=\"0\" title=\"Image of Restore menu and its two submenus\" style=\"border-bottom: 0px;border-left: 0px;padding-left: 0px;padding-right: 0px;border-top: 0px;border-right: 0px;padding-top: 0px\" \/><\/a><\/p>\n<p>The <strong>GetOptions<\/strong> menu also consists of a menu and two submenus. This menu item calls two scripts, one of which displays the Windows PowerShell fonts and changes the Windows PowerShell ISE console to use that font. The second script displays the Windows PowerShell ISE colors that are available along with their name and hex value. Neither of these menu items assigns a keyboard shortcut, so the third position of the <strong>Add<\/strong> command contains a <strong>$null<\/strong> variable. This is shown here: <\/p>\n<blockquote>\n<div class=\"code\"><span style=\"color: #2b91af\">$GetOptions<\/span><span style=\"color: #808080\">&nbsp;<\/span><span style=\"color: #0000ff\">=<\/span><span style=\"color: #808080\">&nbsp;<\/span><span style=\"color: #2b91af\">$psISE<\/span><span style=\"color: #000000\">.CurrentPowerShellTab.AddOnsMenu.Submenus.Add(<\/span><span style=\"color: #808080\"> <br \/>&nbsp;&nbsp; &#8220;GetOptions&#8221;<\/span><span style=\"color: #000000\">,<\/span><span style=\"color: #2b91af\">$null<\/span><span style=\"color: #000000\">,<\/span><span style=\"color: #2b91af\">$null<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #808080\"> <br \/><\/span><span style=\"color: #2b91af\">$GetOptions<\/span><span style=\"color: #000000\">.SubMenus.Add(<\/span><span style=\"color: #808080\">&#8220;GetFonts&#8221;<\/span><span style=\"color: #000000\">,<\/span><span style=\"color: #808080\">&nbsp;<\/span><span style=\"color: #000000\">{<\/span><span style=\"color: #808080\">&nbsp;<\/span><span style=\"color: #000000\">C:\\fso\\Get-PsISEfonts.ps1<\/span><span style=\"color: #808080\">&nbsp;<\/span><span style=\"color: #000000\">}<\/span><span style=\"color: #808080\">&nbsp;<\/span><span style=\"color: #000000\">,<\/span><span style=\"color: #808080\">&nbsp;<\/span><span style=\"color: #2b91af\">$null<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #808080\"> <br \/><\/span><span style=\"color: #2b91af\">$GetOptions<\/span><span style=\"color: #000000\">.SubMenus.Add(<\/span><span style=\"color: #808080\">&#8220;GetColors&#8221;<\/span><span style=\"color: #000000\">,<\/span><span style=\"color: #808080\">&nbsp;<\/span><span style=\"color: #000000\">{<\/span><span style=\"color: #808080\">&nbsp;<\/span><span style=\"color: #000000\">C:\\fso\\Get-PsIseColorValues.ps1<\/span><span style=\"color: #808080\">&nbsp;<\/span><span style=\"color: #000000\">}<\/span><span style=\"color: #808080\">&nbsp;<\/span><span style=\"color: #000000\">,<\/span><span style=\"color: #808080\">&nbsp;<\/span><span style=\"color: #2b91af\">$null<\/span><span style=\"color: #000000\">)<\/span> <\/div>\n<\/blockquote>\n<p>The <strong>GetOptions<\/strong> menu code produces the <strong>GetOptions<\/strong> menu system shown in the following image.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/5635.WES09041003_00CF4424.jpg\"><img decoding=\"async\" height=\"125\" width=\"304\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/2570.WES09041003_thumb_195EE174.jpg\" alt=\"Image of GetOptions menu and its two submenus\" border=\"0\" title=\"Image of GetOptions menu and its two submenus\" style=\"border-bottom: 0px;border-left: 0px;padding-left: 0px;padding-right: 0px;border-top: 0px;border-right: 0px;padding-top: 0px\" \/><\/a><\/p>\n<p>The <strong>MyCustomISE<\/strong> menu item runs the Set-PsISEcolorsAndFonts.ps1 script. This portion of the script is shown here: <\/p>\n<blockquote>\n<div class=\"code\"><span style=\"color: #2b91af\">$psISE<\/span><span style=\"color: #000000\">.CurrentPowerShellTab.AddOnsMenu.Submenus.Add(<\/span><span style=\"color: #808080\"> <br \/>&nbsp;&nbsp; &#8220;MyCustomISE&#8221;<\/span><span style=\"color: #000000\">,<\/span><span style=\"color: #808080\">&nbsp;<\/span><span style=\"color: #000000\">{<\/span><span style=\"color: #808080\">&nbsp;<\/span><span style=\"color: #000000\">C:\\fso\\Set-PsISEcolorsAndFonts.ps1<\/span><span style=\"color: #808080\">&nbsp;<\/span><span style=\"color: #000000\">},<\/span><span style=\"color: #2b91af\">$null<\/span><span style=\"color: #000000\">)<\/span> <\/div>\n<\/blockquote>\n<p>To clear the add-ons menu, call the <strong>Clear<\/strong> method from the <strong>Submenus<\/strong> object as shown here:<\/p>\n<blockquote>\n<div class=\"code\"><span style=\"color: #2b91af\">$psISE<\/span><span style=\"color: #000000\">.CurrentPowerShellTab.AddOnsMenu.Submenus.Add(<\/span><span style=\"color: #808080\">&#8220;ClearMenu&#8221;<\/span><span style=\"color: #000000\">,<\/span><span style=\"color: #808080\">&nbsp; <br \/>&nbsp;&nbsp; <\/span><span style=\"color: #000000\">{<\/span><span style=\"color: #808080\">&nbsp;<\/span><span style=\"color: #2b91af\">$psISE<\/span><span style=\"color: #000000\">.CurrentPowerShellTab.AddOnsMenu.Submenus.<\/span><span style=\"color: #0000ff\">Clear<\/span><span style=\"color: #000000\">()<\/span><span style=\"color: #808080\">&nbsp;<\/span><span style=\"color: #000000\">},<\/span><span style=\"color: #808080\">&nbsp;<\/span><span style=\"color: #2b91af\">$null<\/span><span style=\"color: #000000\">)<\/span> <\/div>\n<\/blockquote>\n<p>Well, that is about all there is to adding custom menu items to the Windows PowerShell ISE. Join us tomorrow as we continue to explore the Windows PowerShell ISE&mdash;it is way cool. <\/p>\n<p>We would love you to follow us on <a href=\"http:\/\/bit.ly\/scriptingguystwitter\">Twitter<\/a> and <a href=\"http:\/\/bit.ly\/scriptingguysfacebook\">Facebook<\/a>. If you have any questions, send email to us at <a href=\"mailto:scripter@microsoft.com\">scripter@microsoft.com<\/a>, or post your questions 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><strong>Ed Wilson and Craig Liebendorfer, Scripting Guys<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Summary: Microsoft Scripting Guy Ed Wilson provides step-by-step instructions for adding custom menu items to the Windows PowerShell ISE. &nbsp; Microsoft Scripting Guy Ed Wilson here. A long long long long time ago in a far far far far away land, I used to write code in a language called WordBasic. Using Word Basic I [&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,100],"class_list":["post-17221","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","tag-windows-powershell-ise"],"acf":[],"blog_post_summary":"<p>Summary: Microsoft Scripting Guy Ed Wilson provides step-by-step instructions for adding custom menu items to the Windows PowerShell ISE. &nbsp; Microsoft Scripting Guy Ed Wilson here. A long long long long time ago in a far far far far away land, I used to write code in a language called WordBasic. Using Word Basic I [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/posts\/17221","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=17221"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/posts\/17221\/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=17221"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/categories?post=17221"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/tags?post=17221"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}