{"id":51783,"date":"2009-12-16T00:01:00","date_gmt":"2009-12-16T00:01:00","guid":{"rendered":"https:\/\/blogs.technet.microsoft.com\/heyscriptingguy\/2009\/12\/16\/hey-scripting-guy-can-i-use-windows-powershell-to-create-a-new-outlook-inbox-rule\/"},"modified":"2009-12-16T00:01:00","modified_gmt":"2009-12-16T00:01:00","slug":"hey-scripting-guy-can-i-use-windows-powershell-to-create-a-new-outlook-inbox-rule","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/scripting\/hey-scripting-guy-can-i-use-windows-powershell-to-create-a-new-outlook-inbox-rule\/","title":{"rendered":"Hey, Scripting Guy! Can I Use Windows PowerShell to Create a New Outlook Inbox Rule?"},"content":{"rendered":"<p class=\"MsoNormal\"><a class=\"addthis_button\" href=\"http:\/\/www.addthis.com\/bookmark.php?v=250&amp;pub=scriptingguys\"><img decoding=\"async\" alt=\"Bookmark and Share\" src=\"http:\/\/s7.addthis.com\/static\/btn\/v2\/lg-share-en.gif\" width=\"125\" height=\"16\"><\/a><\/p>\n<p class=\"MsoNormal\">&nbsp;<\/p>\n<p><font size=\"2\"><img decoding=\"async\" title=\"Hey, Scripting Guy! Question\" border=\"0\" alt=\"Hey, Scripting Guy! Question\" align=\"left\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/q-for-powertip.jpg\" width=\"34\" height=\"34\"><\/font><\/p>\n<p class=\"MsoNormal\">Hey Scripting Guy! I would absolutely love to see a Windows PowerShell script that would create a new inbox rule in Microsoft Outlook. I have looked all over the Internet and have come up blank. I have asked friends, and people at work and no one seems to know how to do this. I am not sure it can actually be accomplished, but I figure if anyone can do it, you can! By the way, I loved your article about creating folders in Outlook and thought it was incredibly helpful. That is what gave me the idea to write. If you don&rsquo;t take requests, I completely understand. You must get thousands. <\/p>\n<p class=\"MsoNormal\">&#8212; PC<\/p>\n<p class=\"MsoNormal\">&nbsp;<\/p>\n<p class=\"MsoNormal\"><img decoding=\"async\" title=\"Hey, Scripting Guy! Answer\" border=\"0\" alt=\"Hey, Scripting Guy! Answer\" align=\"left\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/a-for-powertip.jpg\" width=\"34\" height=\"34\">&nbsp;Hello PC, <\/p>\n<p class=\"MsoNormal\">Microsoft Scripting Guy Ed Wilson here. It is a wonderful day&mdash;and it will only get better. I am getting ready to go on holiday for 10 days. I have only one meeting today, and I have had time to answer a few vital e-mails and create my out of office (OOF) reply. Because it is such a great day, I took the time to write a pretty cool script for my OOF. It is called Start-Vacation.ps1 and is seen here. (You therefore get two scripts for the price of one today, an amazing holiday bargain.) <\/p>\n<p class=\"CodeBlockScreenedHead\"><strong>Start-Vacation.ps1<\/strong><\/p>\n<p class=\"CodeBlockScreened\"><font face=\"Lucida Sans Typewriter\">Function Start-Vacation<br>{<br><span>&nbsp;<\/span>Param($user,$start, $stop, $contact)<br><span>&nbsp;<\/span>$oof = New-Object psobject<br><span>&nbsp;<\/span>$oof | Add-Member -MemberType noteProperty -Name userName -Value $user<br><span>&nbsp;<\/span>$oof | Add-Member -MemberType noteProperty -Name startdate -Value $start<br><span>&nbsp;<\/span>$oof | Add-Member -MemberType noteProperty -Name enddate -Value $stop<br><span>&nbsp;<\/span>$oof | Add-Member -MemberType noteProperty -Name ScriptCenterContact -Value $contact<br><span>&nbsp;<\/span>$oof | Add-Member -MemberType noteProperty -Name Email -Value $false<br><span>&nbsp;<\/span>$oof | Add-Member -MemberType noteProperty -Name Phone -Value $false<br><span>&nbsp;<\/span>$oof | Add-Member -MemberType noteProperty -Name FaceBook -Value $false<br><span>&nbsp;<\/span>$oof | Add-Member -MemberType noteProperty -Name Twitter -Value $false<br><span>&nbsp;<\/span>$oof<br>} #end function Start-Vacation<\/p>\n<p># *** start script ***<\/p>\n<p>$oof = Start-vacation -user &#8220;EdWilson&#8221; -start &#8220;12\/5\/2009&#8221; -stop &#8220;12\/15\/2009&#8221; `<br><span>&nbsp;&nbsp;&nbsp;&nbsp; <\/span>-contact &#8220;CraigLiebendorfer&#8221;<br>&#8220;Microsoft Scripting Guy Ed Wilson is on vacation &#8230;&#8221;<br>$oof<\/font><\/p>\n<p class=\"MsoNormal\">I have a function called <b>Start-Vacation<\/b> that accepts four input parameters: the user name, start dates, stop dates, and the person to contact while I am away. Inside the <b>Start-Vacation<\/b> function, I create a custom <b>psobject<\/b> and add several <b>noteProperties<\/b> to the object. The last thing I do in the function is return the custom object to the calling script. The script itself begins by calling the <b>Start-Vacation<\/b> function, passing the appropriate parameters, and capturing the custom <b>psobject<\/b> in the <b>$oof<\/b> variable. The script then displays that object. The results from running the script are shown here:<\/p>\n<p class=\"CodeBlockScreened\"><font face=\"Lucida Sans Typewriter\">Microsoft Scripting Guy Ed Wilson is on vacation &#8230;<\/p>\n<p><br>userName<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>: EdWilson<br>startdate<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>: 12\/5\/2009<br>enddate<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>: 12\/15\/2009<br>ScriptCenterContact : CraigLiebendorfer<br>Email<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>: False<br>Phone<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>: False<br>FaceBook<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>: False<br>Twitter<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>: False<\/font><\/p>\n<p class=\"MsoNormal\">PC, a wonderful day does not automatically happen. My wonderful day actually started three days ago when I wrote the CreateOutLookRule.ps1 in answer to your question about creating Outlook rules via script. Unfortunately, when I ran the CreateOutlookRule.ps1 script on my laptop, it did not work. It kept giving me a type mismatch error when it attempted to add the rule. Therefore, I tested, revised, retested, and was getting nowhere. Finally, I caught Stephanie who is a PFE in Florida on Office Communicator and asked her to look at the script. I also sent the script to James who is a test engineer on the Windows PowerShell team in Redmond, and to George who is a PFE in Quebec. Everyone said, &ldquo;Bummer it does not work&rdquo; except for George who said, &ldquo;Cool, it works great.&rdquo; He then asked me if I was running the beta of Outlook 2010. &ldquo;Of course I am,&rdquo; I said. &ldquo;Aren&rsquo;t you?&rdquo; As it turns out, he is running Office 2007 on his laptop, and the script worked perfectly. <\/p>\n<p class=\"MsoNormal\">I then built an Exchange 2010 server and a client workstation running Windows 7 and Office 2007 to test his findings. As it turns out, the script does work perfectly. I then filed a bug with the Microsoft Office team. <\/p>\n<p class=\"MsoNormal\">James, the consummate professional, also tested an additional scenario&mdash;Outlook 2007 with Project 2010 installed. That scenario also fails, so it seems if you have any beta Office 2010 product installed, the script will fail. Hopefully, the automation bug will get fixed before the final release because the CreateOutlookRule.ps1 script really is cool. <\/p>\n<p class=\"MsoNormal\">PC, the complete CreateOutlookRule.ps1 script is seen here. <\/p>\n<p class=\"CodeBlockScreenedHead\"><strong>CreateOutLookRule.ps1<\/strong><\/p>\n<p class=\"CodeBlockScreened\"><font face=\"Lucida Sans Typewriter\">#Requires -version 2.0<br>Add-Type -AssemblyName microsoft.office.interop.outlook <br>$olFolders = &#8220;Microsoft.Office.Interop.Outlook.OlDefaultFolders&#8221; -as [type]<br>$olRuleType = &#8220;Microsoft.Office.Interop.Outlook.OlRuleType&#8221; -as [type]<br>$outlook = New-Object -ComObject outlook.application<br>$namespace<span>&nbsp; <\/span>= $Outlook.GetNameSpace(&#8220;mapi&#8221;)<br>$inbox = $namespace.getDefaultFolder($olFolders::olFolderInbox)<br>$MoveTarget = $inbox.Folders.item(&#8220;FromBob&#8221;)<br>$rules = $outlook.session.DefaultStore.GetRules()<br>$rule = $rules.Create(&#8220;MyNewRule&#8221;,$olRuleType::OlRuleReceive)<br>$FromCondition = $rule.Conditions.From<br>$FromCondition.Enabled = $true<br>$FromCondition.Recipients.Add(&#8220;bob&#8221;)<br>$fromCondition.Recipients.ResolveAll()<br>$MoveRuleAction = $rule.actions.MoveToFolder<br>$MoveRuleAction.Folder = $Movetarget<br>$MoveRuleAction.Enabled = $true<br>$rules.Save()<\/font><\/p>\n<p class=\"MsoNormal\">The first thing the CreateOutlookRule.ps1 script does is use the <b>Add-Type<\/b> cmdlet to load the outlook interop assembly. Next it adds the <b>OlDefaultFolders<\/b> and the <b>OlRuleType<\/b> type enumerations and stores them in the <b>$olFolders<\/b> and <b>$olRuleType<\/b> variables. For more information about working with the <b>Add-Type<\/b> cmdlet or type enumerations, see <a href=\"http:\/\/blogs.technet.com\/heyscriptingguy\/archive\/2009\/12\/14\/hey-scripting-guy-december-14-2009.aspx\">Monday&rsquo;s Hey, Scripting Guy! article<\/a>. The code that loads the interop assembly and type enumerations is seen here:<\/p>\n<p class=\"CodeBlockScreened\"><font face=\"Lucida Sans Typewriter\">#Requires &ndash;version 2.0<\/font><\/p>\n<p class=\"CodeBlockScreened\"><font face=\"Lucida Sans Typewriter\">Add-Type -AssemblyName microsoft.office.interop.outlook <\/font><\/p>\n<p class=\"CodeBlockScreened\"><font face=\"Lucida Sans Typewriter\">$olFolders = &#8220;Microsoft.Office.Interop.Outlook.OlDefaultFolders&#8221; -as [type]<\/font><\/p>\n<p class=\"CodeBlockScreened\"><font face=\"Lucida Sans Typewriter\">$olRuleType = &#8220;Microsoft.Office.Interop.Outlook.OlRuleType&#8221; -as [type]<\/font><\/p>\n<p class=\"MsoNormal\">The next thing that is done in the CreateOutlookRule.ps1 script is to load the Outlook application COM object. This is accomplished by using the <b>New-Object<\/b> cmdlet. The returned application object is stored in the <b>$outlook<\/b> variable. The <b>GetNameSpace<\/b> method is used from the application object to return a namespace object that is stored in the <b>$namespace<\/b> variable. This is shown here:<\/p>\n<p class=\"CodeBlockScreened\"><font face=\"Lucida Sans Typewriter\">$outlook = New-Object -ComObject outlook.application<\/font><\/p>\n<p class=\"CodeBlockScreened\"><font face=\"Lucida Sans Typewriter\">$namespace<span>&nbsp; <\/span>= $Outlook.GetNameSpace(&#8220;mapi&#8221;)<\/font><\/p>\n<p class=\"MsoNormal\">Then the <b>GetDefaultFolder<\/b> method from the <b>namespace<\/b> object is used to return a folder object. The <b>olFolderInbox<\/b> enumeration value is passed to the <b>GetDefaultFolder<\/b> method. The resulting folder object is stored in the <b>$inbox<\/b> variable, as seen here:<\/p>\n<p class=\"CodeBlockScreened\"><font face=\"Lucida Sans Typewriter\">$inbox = $namespace.getDefaultFolder($olFolders::olFolderInbox)<\/font><\/p>\n<p class=\"MsoNormal\">After you have a <b>folder<\/b> object, the <b>folders<\/b> property of the <b>folder<\/b> object is used to return a <b>folders<\/b> collection. The <b>folders<\/b> collection contains the <b>item<\/b> method that takes the name of an existing folder in your Outlook profile. In this example, I used the Outlook application to create a folder named <b>FromBob<\/b> before running the script. This made sense to me because the Outlook rule I am going to create will move e-mails from a user named Bob to the <b>FromBob<\/b> folder. The reference to the <b>FromBob<\/b> folder object is stored in the <b>$MoveTarget<\/b> variable, as shown here:<\/p>\n<p class=\"CodeBlockScreened\"><font face=\"Lucida Sans Typewriter\">$MoveTarget = $inbox.Folders.item(&#8220;FromBob&#8221;)<\/font><\/p>\n<p class=\"MsoNormal\">To create a new rule in Microsoft Outlook, you need to first obtain a <b>rules<\/b> object. The easiest way to obtain a <b>rules<\/b> object is to use the <b>GetRules<\/b> method from a <b>store<\/b> object. To obtain the <b>store<\/b> object, use the <b>DefaultStore<\/b> property from a <b>session<\/b> object. The <b>session<\/b> object is obtained from the <b>Session<\/b> property of the <b>Outlook Application<\/b> object. The <b>rules<\/b> object is stored in the <b>$rules<\/b> variable, as shown here:<\/p>\n<p class=\"CodeBlockScreened\"><font face=\"Lucida Sans Typewriter\">$rules = $outlook.session.DefaultStore.GetRules()<\/font><\/p>\n<p class=\"MsoNormal\">After you have a rules object, you can use the <b>Create<\/b> method to create a new rule. The <b>Create<\/b> method requires two parameters: the first is a string that represents the name of the new rule, and the second parameter is the type of rule to create. For the CreateOutLookRule.ps1 script, I am creating a rule that is appliedwhen a new e-mail is received; therefore, I use the <b>OlRuleReceive<\/b> enumeration from the <b>OlRuleType<\/b> enumeration. There are many other types of rules that can be created by using a different enumeration value for this parameter. Store the new rule object that is created by the <b>Create<\/b> method in the <b>$rule<\/b> variable, as shown here:<\/p>\n<p class=\"CodeBlockScreened\"><font face=\"Lucida Sans Typewriter\">$rule = $rules.Create(&#8220;MyNewRule&#8221;,$olRuleType::OlRuleReceive)<\/font><\/p>\n<p class=\"MsoNormal\">Now it is time to fill out the parameters for the new rule. These correspond to the parameters you can supply from the Rules and Alerts wizard that is available in Outlook 2007. Because I want the rule to be triggered when an e-mail contains a specific name in the <b>From<\/b> property, I specify the <b>From<\/b> condition, and store the returned <b>Condition<\/b> object in the <b>$FromCondition<\/b> variable. The exact configuration of condition properties that are used depends on the type of <b>Condition<\/b> object that you create. Of course, all rules will need to be enabled by setting the <b>Enabled<\/b> property to <b>$true<\/b>, as seen here:<\/p>\n<p class=\"CodeBlockScreened\"><font face=\"Lucida Sans Typewriter\">$FromCondition = $rule.Conditions.From<\/font><\/p>\n<p class=\"CodeBlockScreened\"><font face=\"Lucida Sans Typewriter\">$FromCondition.Enabled = $true<\/font><\/p>\n<p class=\"MsoNormal\">A recipient is added and resolved by using the <b>Add<\/b> method and the <b>ResolveAll<\/b> method from the <b>Recipient<\/b> object, as seen here. <\/p>\n<p class=\"CodeBlockScreened\"><font face=\"Lucida Sans Typewriter\">$FromCondition.Recipients.Add(&#8220;bob&#8221;)<\/font><\/p>\n<p class=\"CodeBlockScreened\"><font face=\"Lucida Sans Typewriter\">$fromCondition.Recipients.ResolveAll()<\/font><\/p>\n<p class=\"MsoNormal\">The <b>MoveToFolder<\/b> action object is created and stored in the <b>$MoveRuleAction<\/b> variable. The <b>Folder<\/b> property is used to specify the target of the <b>Move<\/b> operation, and it receives the <b>Folder<\/b> object stored in the <b>$Movetarget<\/b> variable. When this is completed, the action is enabled by setting the <b>Enabled<\/b> property equal to <b>$true,<\/b> as shown here:<\/p>\n<p class=\"CodeBlockScreened\"><font face=\"Lucida Sans Typewriter\">$MoveRuleAction = $rule.actions.MoveToFolder<\/font><\/p>\n<p class=\"CodeBlockScreened\"><font face=\"Lucida Sans Typewriter\">$MoveRuleAction.Folder = $Movetarget<\/font><\/p>\n<p class=\"CodeBlockScreened\"><font face=\"Lucida Sans Typewriter\">$MoveRuleAction.Enabled = $true<\/font><\/p>\n<p class=\"MsoNormal\">When everything has been configured properly, the newly created rule is saved by calling the <b>Save<\/b> method from the <b>rules<\/b> object, as shown here:<\/p>\n<p class=\"CodeBlockScreened\"><font face=\"Lucida Sans Typewriter\">$rules.Save()<\/font><\/p>\n<p class=\"MsoNormal\">The newly created rule can be seen in Microsoft Outlook 2007 by clicking <b>Rules and Alerts<\/b> in the <b>Tools<\/b> menu. This is shown here:<\/p>\n<p class=\"Fig-Graphic\"><span><img decoding=\"async\" title=\"Image of newly created rule\" alt=\"Image of newly created rule\" src=\"http:\/\/img.microsoft.com\/library\/media\/1033\/technet\/images\/scriptcenter\/qanda\/hsg\/2009\/december\/hey1216\/hsg-12-16-09-01.jpg\" width=\"591\" height=\"460\"><a href=\"http:\/\/img.microsoft.com\/library\/media\/1033\/technet\/images\/scriptcenter\/qanda\/hsg\/2009\/december\/hey1216\/hsg-12-16-09-01.jpg\"><font face=\"Segoe\"><\/font><\/a><\/span><\/p>\n<p class=\"Fig-Graphic\">\n<p>&nbsp;<\/p>\n<\/p>\n<p class=\"MsoNormal\">PC that is all there is to creating an inbox rule in Outlook using Windows PowerShell. Microsoft Outlook Week will continue tomorrow. <\/p>\n<p class=\"MsoNormal\">If you want to know exactly what we will be looking at tomorrow, follow us on <a href=\"http:\/\/bit.ly\/scriptingguystwitter\" target=\"_blank\">Twitter<\/a> or <a href=\"http:\/\/bit.ly\/scriptingguysfacebook\" target=\"_blank\">Facebook<\/a>. If you have any questions, send e-mail to us at <a href=\"http:\/\/blogs.technet.commailto:scripter@microsoft.com\" target=\"_blank\"><font face=\"Segoe\">scripter@microsoft.com<\/font><\/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 class=\"MsoNormal\">\n<p>&nbsp;<\/p>\n<\/p>\n<p><b><span>Ed Wilson and Craig Liebendorfer, Scripting Guys<\/p>\n<p><\/span><\/b><\/p>\n<p><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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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><\/p>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp; Hey Scripting Guy! I would absolutely love to see a Windows PowerShell script that would create a new inbox rule in Microsoft Outlook. I have looked all over the Internet and have come up blank. I have asked friends, and people at work and no one seems to know how to do this. 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":[212,49,3,45],"class_list":["post-51783","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-scripting","tag-microsoft-outlook","tag-office","tag-scripting-guy","tag-windows-powershell"],"acf":[],"blog_post_summary":"<p>&nbsp; Hey Scripting Guy! I would absolutely love to see a Windows PowerShell script that would create a new inbox rule in Microsoft Outlook. I have looked all over the Internet and have come up blank. I have asked friends, and people at work and no one seems to know how to do this. I [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/posts\/51783","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=51783"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/posts\/51783\/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=51783"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/categories?post=51783"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/tags?post=51783"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}