{"id":2159,"date":"2014-01-24T00:01:00","date_gmt":"2014-01-24T00:01:00","guid":{"rendered":"https:\/\/blogs.technet.microsoft.com\/heyscriptingguy\/2014\/01\/24\/create-backups-of-virtual-machines-in-windows-azure-by-using-powershell\/"},"modified":"2014-01-24T00:01:00","modified_gmt":"2014-01-24T00:01:00","slug":"create-backups-of-virtual-machines-in-windows-azure-by-using-powershell","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/scripting\/create-backups-of-virtual-machines-in-windows-azure-by-using-powershell\/","title":{"rendered":"Create Backups of Virtual Machines in Windows Azure by using PowerShell"},"content":{"rendered":"<p align=\"left\"><b>Summary<\/b>: Guest blogger, Keith Mayer, talks about using Windows PowerShell to manage cloud-based backups.<\/p>\n<p>Microsoft Scripting Guy, Ed Wilson, is here. Welcome back Keith Mayer as our guest blogger today. This is Part 1 of a two-part series. In Part 2, we&rsquo;ll restore virtual machines in Windows Azure from these backups.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/hsg-1-24-14-1.jpg\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/hsg-1-24-14-1.jpg\" alt=\"Photo of Keith Mayer\" title=\"Photo of Keith Mayer\" \/><\/a><\/p>\n<p style=\"margin-left:30px\">Keith Mayer is a senior technical evangelist at Microsoft, and he focuses on the Windows infrastructure, datacenter virtualization, systems management, and the private cloud. Keith has over 20 years of experience as a technical leader of complex IT projects, in diverse roles, including network engineer, IT manager, technical instructor, and consultant. He has consulted and trained thousands of IT professionals worldwide on the design and implementation of enterprise technology solutions.<b><\/b><\/p>\n<p style=\"margin-left:30px\">You can find Keith online at <a href=\"http:\/\/keithmayer.com\/\" target=\"_blank\">http:\/\/KeithMayer.com<\/a>.<\/p>\n<p><a href=\"http:\/\/www.windowsazure.com\/\" title=\"Learn more about Windows Azure Infrastructure Services\" target=\"_blank\">Windows Azure Infrastructure Services<\/a> provides the ability to easily provision or migrate storage, virtual machines, and virtual networks to the global Windows Azure cloud platform by using a cost-effective <a href=\"http:\/\/www.windowsazure.com\/en-us\/pricing\/details\/virtual-machines\/\" title=\"How much does Windows Azure cost?\" target=\"_blank\">Pay-As-You-Go<\/a> model. In my prior Weekend Scripter posts, <a href=\"https:\/\/devblogs.microsoft.com\/scripting\/weekend-scripter-getting-started-with-windows-azure-and-powershell\/\" target=\"_blank\">Getting Started with Windows Azure and PowerShell<\/a> and <a href=\"https:\/\/devblogs.microsoft.com\/scripting\/weekend-scripter-remoting-the-cloud-with-windows-azure-and-powershell\/\" target=\"_blank\">Remoting the Cloud with Windows Azure and PowerShell<\/a>, I provided an introduction to using Windows PowerShell for automated provisioning of Windows Azure cloud fabric resources and workloads running inside virtual machines in Windows Azure.<\/p>\n<p><a href=\"https:\/\/aka.ms\/WindowsAzureFreeTrial\" target=\"_blank\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/linked%20pic.png\" border=\"0\" alt=\" \" \/><\/a><\/p>\n<p>Once you&rsquo;ve provisioned a few lab virtual machines on Windows Azure, you&rsquo;ll likely want to create a backup copy of each virtual machine. This is particularly useful in test lab scenarios, so that you can quickly revert virtual machines back to a known state prior to performing a set of tests.<\/p>\n<p>When you are working in the on-premises world, this is typically performed via virtual machine backup, snapshot, or checkpoint capabilities. In Windows Azure, back up and restore of virtual hard disks can be quickly performed in the cloud with the <a href=\"http:\/\/www.windowsazure.com\/en-us\/downloads\/#cmd-line-tools\" target=\"_blank\">Windows Azure PowerShell Module<\/a> by leveraging the <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/dn408552.aspx\" target=\"_blank\">Start-AzureStorageBlobCopy<\/a> cmdlet. However, there&rsquo;s a bit of work we&rsquo;ll need to do upfront to capture the information we&rsquo;ll need for completing this process.<\/p>\n<p>In this post, we&rsquo;ll step through the process of building a Windows PowerShell script to back up virtual machines in Windows Azure. At the end of this post, I&rsquo;ve provided a link to the next step, restoring virtual machines in Windows Azure, so that you&rsquo;ll have the complete end-to-end process.<\/p>\n<p>To back up virtual machines in Windows Azure, we&rsquo;ll step through the following tasks:<\/p>\n<ul>\n<li>Select a virtual machine to back up<\/li>\n<li>Identify each virtual hard disk<\/li>\n<li>Create a cloud storage container for storing backups<\/li>\n<li>Back up virtual machines to cloud storage in Windows Azure<\/li>\n<\/ul>\n<p style=\"margin-left:30px\"><b>Note<\/b>&nbsp;&nbsp;To learn more about the basics of Windows Azure Infrastructure Services, you might also be interested in the <a href=\"https:\/\/aka.ms\/EarlyExpertsCloud\" target=\"_blank\">&ldquo;Early Experts&rdquo; Cloud Quest<\/a> and our scenario-based <a href=\"https:\/\/aka.ms\/CloudLab\" target=\"_blank\">Cloud Labs<\/a> step-by-step guides. Both are free online study resources that provide hands-on lab exercises for leveraging Windows Azure and building key IT pro cloud scenarios.<\/p>\n<h3>Select virtual machine to back up<\/h3>\n<p>The virtual machine you want to back up and restore can be selected by using the <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/jj152849.aspx\" target=\"_blank\">Get-AzureVM<\/a> cmdlet. Running <b>Get-AzureVM<\/b> alone returns a list of virtual machines that are currently provisioned in Windows Azure.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/hsg-1-24-14-2.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/hsg-1-24-14-2.png\" alt=\"Image of command output\" title=\"Image of command output\" \/><\/a><br \/><strong>&nbsp; Get-AzureVM cmdlet output<\/strong><\/p>\n<p>To select a particular virtual machine, you can pass the <b>ServiceName<\/b><i> <\/i>and <b>Name<\/b><i> <\/i>values as parameters and set the output to a new Windows PowerShell variable.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/hsg-1-24-14-3.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/hsg-1-24-14-3.png\" alt=\"Image of command output\" title=\"Image of command output\" \/><\/a><br \/><strong>&nbsp; Selecting a Windows Azure virtual machine<\/strong><\/p>\n<p>Now our selected Windows Azure virtual machine can be referenced by using the variable <b>$vm<\/b> in the remainder of our script.<\/p>\n<p>To capture a valid backup of each virtual hard disk, we also need to temporarily shut down the virtual machine to a state where the virtual machine is not running, but its configuration is kept in a provisioned state. We can accomplish this with the <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/jj152831.aspx\" target=\"_blank\">Stop-AzureVM<\/a> cmdlet.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/hsg-1-24-14-4.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/hsg-1-24-14-4.png\" alt=\"Image of command output\" title=\"Image of command output\" \/><\/a><br \/><strong>&nbsp; Using Stop-AzureVM with the StayProvisioned parameter<\/strong><\/p>\n<p>Now that our virtual machine is selected and in the right state, we can proceed to the next step of finding each virtual hard disk we want to back up and restore.<\/p>\n<h3>Identify virtual hard disks<\/h3>\n<p>Virtual machines in Windows Azure can be provisioned with two general types of virtual hard disks: operating system disks and data disks. Each virtual machine will have one operating system disk from which it boots and runs the operating system. In addition, each virtual machine can have one or more additional data disks on which program code and data files can be stored. To perform a complete virtual machine backup, we&rsquo;ll need to locate all of the virtual hard disks that our virtual machine is currently using.<\/p>\n<p>To store the location for the operating system disk, we can use the <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/jj152871.aspx\" target=\"_blank\">Get-AzureOSDisk<\/a> cmdlet.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/hsg-1-24-14-5.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/hsg-1-24-14-5.png\" alt=\"Image of command output\" width=\"400\" height=\"43\" title=\"Image of command output\" \/><\/a><br \/>&nbsp; <strong>Locating the virtual machine operating system disk with Get-AzureOSDisk<\/strong><\/p>\n<p>For any virtual hard disk that we want to back up or restore, the two property values in which we&rsquo;ll be most interested are the <b>DiskName<\/b> and <b>MediaLink<\/b> values, which are shown in the following image. These values provide the information that we&rsquo;ll need to properly back up and restore each virtual hard disk that is associated with a virtual machine.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/hsg-1-24-14-6.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/hsg-1-24-14-6.png\" alt=\"Image of command output\" title=\"Image of command output\" \/><\/a><br \/>&nbsp; <strong>Common property values for a Windows Azure virtual hard disk<\/strong><\/p>\n<p>To store the location for all data disks, we can use the <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/jj152871.aspx\" target=\"_blank\">Get-AzureDataDisk<\/a> cmdlet. Because virtual machines can be provisioned with multiple data disks, this cmdlet returns of a collection of data virtual hard disks.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/hsg-1-24-14-7.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/hsg-1-24-14-7.png\" alt=\"Image of command output\" title=\"Image of command output\" \/><\/a>&nbsp;<br \/>&nbsp;&nbsp;<strong>Storing location for data disks with the Get-AzureDataDisk cmdlet<\/strong><\/p>\n<h3>Create cloud storage container for storing backups<\/h3>\n<p>Prior to performing a backup, we&rsquo;ll need to make sure that a container exists in our Windows Azure Storage Account to store these backup copies. First, we&rsquo;ll need to determine the name of our Windows Azure Storage Account. We can do this by leveraging the <b>MediaLink<\/b><i> <\/i>property of Azure Disks mentioned earlier.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/hsg-1-24-14-8.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/hsg-1-24-14-8.png\" alt=\"Image of command output\" title=\"Image of command output\" \/><\/a><br \/>&nbsp; <strong>Determining the name of Windows Azure Storage Account by using MediaLink property<\/strong><\/p>\n<p>Now that we know the name of our Windows Azure Storage Account, we&rsquo;ll want to set it as the current storage account for the remainder of our script by using the <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/dn408531.aspx\" target=\"_blank\">Set-AzureSubscription<\/a> cmdlet.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/hsg-1-24-14-9.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/hsg-1-24-14-9.png\" alt=\"Image of command output\" title=\"Image of command output\" \/><\/a><br \/>&nbsp; <strong>Setting the current storage account<\/strong><\/p>\n<p>Next, we can easily check to see if our desired container location for storing backups already exists inside our storage account, and if not, we can quickly create it by using the <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/dn408517.aspx\" target=\"_blank\">New-AzureStorageContainer<\/a> cmdlet.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/hsg-1-24-14-10.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/hsg-1-24-14-10.png\" alt=\"Image of command output\" title=\"Image of command output\" \/><\/a><br \/>&nbsp; <strong>Creating a new Windows Azure storage container<\/strong><\/p>\n<p>We can confirm that the new storage container has been created by using the <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/dn408574.aspx\" target=\"_blank\">Get-AzureStorageContainer<\/a> cmdlet without parameters.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/hsg-1-24-14-11.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/hsg-1-24-14-11.png\" alt=\"Image of command output\" title=\"Image of command output\" \/><\/a><br \/><strong>&nbsp; Confirming creation of storage container with Get-AzureStorageContainer cmdlet<\/strong><\/p>\n<p>Now, we&rsquo;re ready to back up our virtual machine!<\/p>\n<h3>Back up virtual machines in Windows Azure to cloud storage<\/h3>\n<p>To create a backup copy of the operating system disk on our virtual machine, we&rsquo;ll first set the values for a couple variables that identify the blob and container names for the virtual disk that we want to back up. Then, we&rsquo;ll use the <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/dn408552.aspx\" target=\"_blank\">Start-AzureStorageBlobCopy<\/a> cmdlet to begin the copy process to our previously defined backup container location.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/hsg-1-24-14-12.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/hsg-1-24-14-12.png\" alt=\"Image of command output\" title=\"Image of command output\" \/><\/a><br \/>&nbsp; <strong>Using Start-AzureStorageBlobCopy cmdlet to back up virtual hard disk<\/strong><\/p>\n<p>It&rsquo;s important to note that the copy process performed by the <b>Start-AzureStorageBlobCopy<\/b> cmdlet is asynchronous in nature, and it runs in the background on the Windows Azure platform. To ensure that the copy process has completed before continuing with the next line in a script, we can use the <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/dn408525.aspx\" target=\"_blank\">Get-AzureStorageBlobCopyState<\/a> cmdlet to wait until the copy process is finished.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/hsg-1-24-14-13.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/hsg-1-24-14-13.png\" alt=\"Image of command output\" title=\"Image of command output\" \/><\/a><br \/>&nbsp; <strong>Using Get-AzureStorageBlobCopyState to confirm that the copy process completed<\/strong><\/p>\n<p>To back up our Windows Azure data disks, we&rsquo;ll use a similar set of cmdlets, but we&rsquo;ll run them inside a <b>ForEach<\/b> loop because Windows Azure data disks are returned as a collection.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/hsg-1-24-14-14.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/hsg-1-24-14-14.png\" alt=\"Image of command output\" title=\"Image of command output\" \/><\/a><br \/>&nbsp; <strong>Back up data disks by using ForEach loop<\/strong><\/p>\n<p>After the backup process has completed, use the <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/dn408574.aspx\" target=\"_blank\">Get-AzureStorageBlob<\/a> cmdlet to confirm that a copy of each virtual hard disk now exists in the backup storage container location.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/hsg-1-24-14-15.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/hsg-1-24-14-15.png\" alt=\"Image of command output\" title=\"Image of command output\" \/><\/a><br \/>&nbsp; <strong>Using Get-AzureStorageBlob to confirm backup copies<\/strong><\/p>\n<p>Our backup process is complete, and we can now restart the Windows Azure virtual machine by using the <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/jj152821.aspx\" target=\"_blank\">Start-AzureVM<\/a> cmdlet.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/hsg-1-24-14-16.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/hsg-1-24-14-16.png\" alt=\"Image of command output\" title=\"Image of command output\" \/><\/a><br \/>&nbsp; <strong>Using Start-AzureVM to restart virtual machine after back up is complete<\/strong><\/p>\n<p>Congratulations! But keep learning!<\/p>\n<p>You&rsquo;ve completed the process for creating cloud backups of virtual machines in Windows Azure with Windows PowerShell! You can use the cmdlets and snippets in this post to quite easily build an automated approach to capture a backup of each Windows Azure virtual machine in your subscription, perhaps on a nightly basis.<\/p>\n<p>In Part 2 of this series, we&rsquo;ll walk through the process of restoring virtual machines in Windows Azure from these backups so that you can automate the complete end-to-end backup and restore process.<\/p>\n<ul>\n<li><b>DO IT!<\/b> <a href=\"https:\/\/aka.ms\/AzureVMRestoreCloudLab\" target=\"_blank\">Perform Cloud Restores of Windows Azure Virtual Machines using PowerShell<\/a><\/li>\n<\/ul>\n<p>In addition, you may want to leverage these resources to continue your learning about Windows Azure Infrastructure Services:<\/p>\n<ul>\n<li><a href=\"https:\/\/aka.ms\/EarlyExpertsCloud\" target=\"_blank\">&ldquo;Early Experts&rdquo; Cloud Quest<\/a>: Build a virtual network environment for Windows Server&nbsp;2012 with multiple virtual machines in the cloud on Windows Azure!<\/li>\n<li><a href=\"https:\/\/aka.ms\/CloudLab\" target=\"_blank\">Windows Azure Cloud Labs<\/a>: Build key IT pro scenarios in the cloud by using Windows Azure Infrastructure Services!<\/li>\n<li><a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/windowsazure\/jj835083.aspx\" target=\"_blank\">Windows Azure PowerShell Module Tutorials<\/a>: Complete these advanced tutorials about using the Windows Azure PowerShell Module to manage virtual machines and virtual machine images!<\/li>\n<\/ul>\n<p>Thank you, Keith, for sharing your time and knowledge.<\/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><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Summary: Guest blogger, Keith Mayer, talks about using Windows PowerShell to manage cloud-based backups. Microsoft Scripting Guy, Ed Wilson, is here. Welcome back Keith Mayer as our guest blogger today. This is Part 1 of a two-part series. In Part 2, we&rsquo;ll restore virtual machines in Windows Azure from these backups. Keith Mayer is a [&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":[476,56,432,3,45],"class_list":["post-2159","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-scripting","tag-azure","tag-guest-blogger","tag-keith-mayer","tag-scripting-guy","tag-windows-powershell"],"acf":[],"blog_post_summary":"<p>Summary: Guest blogger, Keith Mayer, talks about using Windows PowerShell to manage cloud-based backups. Microsoft Scripting Guy, Ed Wilson, is here. Welcome back Keith Mayer as our guest blogger today. This is Part 1 of a two-part series. In Part 2, we&rsquo;ll restore virtual machines in Windows Azure from these backups. Keith Mayer is a [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/posts\/2159","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=2159"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/posts\/2159\/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=2159"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/categories?post=2159"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/tags?post=2159"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}