{"id":2170,"date":"2012-04-04T14:57:24","date_gmt":"2012-04-04T18:57:24","guid":{"rendered":"http:\/\/jdhitsolutions.com\/blog\/?p=2170"},"modified":"2012-04-04T14:57:24","modified_gmt":"2012-04-04T18:57:24","slug":"pipeline-power","status":"publish","type":"post","link":"https:\/\/jdhitsolutions.com\/blog\/powershell\/2170\/pipeline-power\/","title":{"rendered":"Pipeline Power"},"content":{"rendered":"<p>Last week I came across a blog post that had a decent example using PowerShell and PowerCLI to get the disk location for all virtual machines. The posted code works and does display the information you might be after.<\/p>\n<p><code lang=\"PowerShell\"><br \/>\n$myVMs = get-vm<\/p>\n<p>foreach($vm in $myVMs){<br \/>\n    $myDisks = @($vm | get-harddisk)<br \/>\n    foreach ($disk in $myDisks) {<br \/>\n       write-host $vm.Name, ( $disk|select -ExpandProperty Filename)<br \/>\n    }<br \/>\n}<br \/>\n<\/code><\/p>\n<p>But I saw an teaching opportunity.  Because the code works I can't say it is \"wrong\", but it really doesn't adopt the PowerShell paradigm. The first issue is that using Write-Host only writes content to the console. There is no way with this command to do anything else with the results such as sorting, grouping or sending to a text file.<\/p>\n<p>The other issue is the need to use ForEach. This is what we had to do in VBScript but in PowerShell we can take advantage of the pipeline. <\/p>\n<p><code lang=\"PowerShell\"><br \/>\nget-vm | Select Name,@{Name=\"Disk\";Expression= {$_ | get-harddisk | Select -ExpandProperty Filename }}<br \/>\n<\/code><\/p>\n<p>But now I can do something with this such as sorting by disk:<\/p>\n<p><code lang=\"DOS\"><br \/>\nPS S:\\> get-vm | Select Name,@{Name=\"Disk\";Expression= {$_ | get-harddisk | Select -ExpandProperty Filename }} | sort Disk,Name<\/p>\n<p>Name                                    Disk<br \/>\n----                                    ----<br \/>\nCluster Alpha                           {[datastore1] Cluster Alpha\/Cluster ...<br \/>\nGlobomantics Mail                       [datastore1] globomantics mail\/Win2K...<br \/>\nMyCompany Exchange 2007                 {[datastore1] MyCompany Exchange 200...<br \/>\nMyCompany XP                            {[datastore1] MyCompany XP\/MyCompany...<br \/>\nMyCompany Windows 2008                  [datastore1] MyCompany2008\/Windows S...<br \/>\nMyCompanyDC 2K3R2                       {[datastore1] MyCompanyDC 2K3R2\/MyCo...<br \/>\nR2 Server Core -DEL                     [datastore1] Research Core DC\/R2 Ser...<br \/>\nCluster Bravo                           {[datastore2] Cluster Bravo\/Cluster ...<br \/>\nMyCompany Vista                         {[datastore2] MyCompany Vista\/Vista ...<br \/>\n...<br \/>\n<\/code><\/p>\n<p>Or if there are multiple disks, it is much easier to work with them. Write-Host can't.<\/p>\n<p><code lang=\"DOS\"><br \/>\nPS S:\\> $vminfo=get-vm | Select Name,@{Name=\"Disk\";Expression= {$_ | get-harddisk | Select -ExpandProperty Filename }}<br \/>\nPS S:\\> $vminfo[1].disk<br \/>\n[datastore2] MyCompany Vista\/Vista Baseline.vmdk<br \/>\n[datastore2] MyCompany Vista\/MyCompany Vista.vmdk<br \/>\nPS S:\\> $vminfo | Export-Clixml c:\\work\\vminfo.xml<br \/>\n<\/code><\/p>\n<p>The tricky part here I realize is pulling up a value from a nested object, in this case the Filename and adding it to the VM object. I totally get that this is not something a beginner would necessarily discover on their own, which is why I write stuff like this. But the big difference is that I know have an object written to the pipeline that I can do something with and I didn't have to resort to keep track of what goes where in some foreach loops. <\/p>\n<p>The other advantage, although not universal, is performance. Running the ForEach code against my 23 VMs took almost 6 seconds. My PowerShell one line took a tad over 3 seconds.<\/p>\n<p>I don't want you to think you can never use Write-Host or ForEach. Sometimes they make sense and may even perform better. But always ask yourself if you are thinking the PowerShell way and pushing objects through the pipeline or are you writing something that could be mistaken for VBScript.<\/p>\n<p>By the way, I have posted most of this on the blog as a comment that is awaiting moderation. But I figured I would share it with my readers as well. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Last week I came across a blog post that had a decent example using PowerShell and PowerCLI to get the disk location for all virtual machines. The posted code works and does display the information you might be after. $myVMs = get-vm foreach($vm in $myVMs){ $myDisks = @($vm | get-harddisk) foreach ($disk in $myDisks) {&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[183,4,8,242],"tags":[270,144,98,369,534],"class_list":["post-2170","post","type-post","status-publish","format-standard","hentry","category-powercli","category-powershell","category-scripting","category-vmware-2","tag-foreach","tag-objects","tag-pipeline","tag-powercii","tag-powershell"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Pipeline Power &#8226; The Lonely Administrator<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jdhitsolutions.com\/blog\/powershell\/2170\/pipeline-power\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Pipeline Power &#8226; The Lonely Administrator\" \/>\n<meta property=\"og:description\" content=\"Last week I came across a blog post that had a decent example using PowerShell and PowerCLI to get the disk location for all virtual machines. The posted code works and does display the information you might be after. $myVMs = get-vm foreach($vm in $myVMs){ $myDisks = @($vm | get-harddisk) foreach ($disk in $myDisks) {...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jdhitsolutions.com\/blog\/powershell\/2170\/pipeline-power\/\" \/>\n<meta property=\"og:site_name\" content=\"The Lonely Administrator\" \/>\n<meta property=\"article:published_time\" content=\"2012-04-04T18:57:24+00:00\" \/>\n<meta name=\"author\" content=\"Jeffery Hicks\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@JeffHicks\" \/>\n<meta name=\"twitter:site\" content=\"@JeffHicks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jeffery Hicks\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell\\\/2170\\\/pipeline-power\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell\\\/2170\\\/pipeline-power\\\/\"},\"author\":{\"name\":\"Jeffery Hicks\",\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/#\\\/schema\\\/person\\\/d0258030b41f07fd745f4078bdf5b6c9\"},\"headline\":\"Pipeline Power\",\"datePublished\":\"2012-04-04T18:57:24+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell\\\/2170\\\/pipeline-power\\\/\"},\"wordCount\":361,\"commentCount\":4,\"publisher\":{\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/#\\\/schema\\\/person\\\/d0258030b41f07fd745f4078bdf5b6c9\"},\"keywords\":[\"ForEach\",\"objects\",\"Pipeline\",\"PowerCIi\",\"PowerShell\"],\"articleSection\":[\"PowerCLI\",\"PowerShell\",\"Scripting\",\"VMware\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell\\\/2170\\\/pipeline-power\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell\\\/2170\\\/pipeline-power\\\/\",\"url\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell\\\/2170\\\/pipeline-power\\\/\",\"name\":\"Pipeline Power &#8226; The Lonely Administrator\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/#website\"},\"datePublished\":\"2012-04-04T18:57:24+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell\\\/2170\\\/pipeline-power\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell\\\/2170\\\/pipeline-power\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell\\\/2170\\\/pipeline-power\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"PowerCLI\",\"item\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/category\\\/powercli\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Pipeline Power\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/\",\"name\":\"The Lonely Administrator\",\"description\":\"Practical Advice for the Automating IT Pro\",\"publisher\":{\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/#\\\/schema\\\/person\\\/d0258030b41f07fd745f4078bdf5b6c9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/#\\\/schema\\\/person\\\/d0258030b41f07fd745f4078bdf5b6c9\",\"name\":\"Jeffery Hicks\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/832ae5d438fdcfc1420d720cd1991307927de8a0b12f2342e81c30f773e21098?s=96&d=wavatar&r=pg\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/832ae5d438fdcfc1420d720cd1991307927de8a0b12f2342e81c30f773e21098?s=96&d=wavatar&r=pg\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/832ae5d438fdcfc1420d720cd1991307927de8a0b12f2342e81c30f773e21098?s=96&d=wavatar&r=pg\",\"caption\":\"Jeffery Hicks\"},\"logo\":{\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/832ae5d438fdcfc1420d720cd1991307927de8a0b12f2342e81c30f773e21098?s=96&d=wavatar&r=pg\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Pipeline Power &#8226; The Lonely Administrator","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/jdhitsolutions.com\/blog\/powershell\/2170\/pipeline-power\/","og_locale":"en_US","og_type":"article","og_title":"Pipeline Power &#8226; The Lonely Administrator","og_description":"Last week I came across a blog post that had a decent example using PowerShell and PowerCLI to get the disk location for all virtual machines. The posted code works and does display the information you might be after. $myVMs = get-vm foreach($vm in $myVMs){ $myDisks = @($vm | get-harddisk) foreach ($disk in $myDisks) {...","og_url":"https:\/\/jdhitsolutions.com\/blog\/powershell\/2170\/pipeline-power\/","og_site_name":"The Lonely Administrator","article_published_time":"2012-04-04T18:57:24+00:00","author":"Jeffery Hicks","twitter_card":"summary_large_image","twitter_creator":"@JeffHicks","twitter_site":"@JeffHicks","twitter_misc":{"Written by":"Jeffery Hicks","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jdhitsolutions.com\/blog\/powershell\/2170\/pipeline-power\/#article","isPartOf":{"@id":"https:\/\/jdhitsolutions.com\/blog\/powershell\/2170\/pipeline-power\/"},"author":{"name":"Jeffery Hicks","@id":"https:\/\/jdhitsolutions.com\/blog\/#\/schema\/person\/d0258030b41f07fd745f4078bdf5b6c9"},"headline":"Pipeline Power","datePublished":"2012-04-04T18:57:24+00:00","mainEntityOfPage":{"@id":"https:\/\/jdhitsolutions.com\/blog\/powershell\/2170\/pipeline-power\/"},"wordCount":361,"commentCount":4,"publisher":{"@id":"https:\/\/jdhitsolutions.com\/blog\/#\/schema\/person\/d0258030b41f07fd745f4078bdf5b6c9"},"keywords":["ForEach","objects","Pipeline","PowerCIi","PowerShell"],"articleSection":["PowerCLI","PowerShell","Scripting","VMware"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/jdhitsolutions.com\/blog\/powershell\/2170\/pipeline-power\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/jdhitsolutions.com\/blog\/powershell\/2170\/pipeline-power\/","url":"https:\/\/jdhitsolutions.com\/blog\/powershell\/2170\/pipeline-power\/","name":"Pipeline Power &#8226; The Lonely Administrator","isPartOf":{"@id":"https:\/\/jdhitsolutions.com\/blog\/#website"},"datePublished":"2012-04-04T18:57:24+00:00","breadcrumb":{"@id":"https:\/\/jdhitsolutions.com\/blog\/powershell\/2170\/pipeline-power\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jdhitsolutions.com\/blog\/powershell\/2170\/pipeline-power\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jdhitsolutions.com\/blog\/powershell\/2170\/pipeline-power\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"PowerCLI","item":"https:\/\/jdhitsolutions.com\/blog\/category\/powercli\/"},{"@type":"ListItem","position":2,"name":"Pipeline Power"}]},{"@type":"WebSite","@id":"https:\/\/jdhitsolutions.com\/blog\/#website","url":"https:\/\/jdhitsolutions.com\/blog\/","name":"The Lonely Administrator","description":"Practical Advice for the Automating IT Pro","publisher":{"@id":"https:\/\/jdhitsolutions.com\/blog\/#\/schema\/person\/d0258030b41f07fd745f4078bdf5b6c9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jdhitsolutions.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/jdhitsolutions.com\/blog\/#\/schema\/person\/d0258030b41f07fd745f4078bdf5b6c9","name":"Jeffery Hicks","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/832ae5d438fdcfc1420d720cd1991307927de8a0b12f2342e81c30f773e21098?s=96&d=wavatar&r=pg","url":"https:\/\/secure.gravatar.com\/avatar\/832ae5d438fdcfc1420d720cd1991307927de8a0b12f2342e81c30f773e21098?s=96&d=wavatar&r=pg","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/832ae5d438fdcfc1420d720cd1991307927de8a0b12f2342e81c30f773e21098?s=96&d=wavatar&r=pg","caption":"Jeffery Hicks"},"logo":{"@id":"https:\/\/secure.gravatar.com\/avatar\/832ae5d438fdcfc1420d720cd1991307927de8a0b12f2342e81c30f773e21098?s=96&d=wavatar&r=pg"}}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":699,"url":"https:\/\/jdhitsolutions.com\/blog\/miscellaneous\/699\/vmware-backup-with-powercli-and-veeam\/","url_meta":{"origin":2170,"position":0},"title":"VMware Backup with PowerCLI and Veeam","author":"Jeffery Hicks","date":"July 7, 2010","format":false,"excerpt":"My primary backup drive for my virtual machine backup toasted on me so I had to recreate all of my backup jobs. I\u2019ve been using Veeam\u2019s backup product for VMware and it couldn\u2019t be easier to use. I\u2019ve known that it included a set of PowerShell cmdlets but I had\u2026","rel":"","context":"In &quot;Miscellaneous&quot;","block_context":{"text":"Miscellaneous","link":"https:\/\/jdhitsolutions.com\/blog\/category\/miscellaneous\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":4432,"url":"https:\/\/jdhitsolutions.com\/blog\/powershell\/4432\/vmdk-to-vhdx-pdq\/","url_meta":{"origin":2170,"position":1},"title":"VMDK to VHDX PDQ","author":"Jeffery Hicks","date":"June 26, 2015","format":false,"excerpt":"I have a very old VMware ESXi server that has outlived its useful life. The hardware is at least 5 years old and my VMware license has expired. I can still bring up the server and see the virtual machines, but that's about it. I still keep the box so\u2026","rel":"","context":"In &quot;Hyper-V&quot;","block_context":{"text":"Hyper-V","link":"https:\/\/jdhitsolutions.com\/blog\/category\/hyper-v\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":832,"url":"https:\/\/jdhitsolutions.com\/blog\/powershell-v2-0\/832\/powercli-vm-peek\/","url_meta":{"origin":2170,"position":2},"title":"PowerCLI VM Peek","author":"Jeffery Hicks","date":"August 17, 2010","format":false,"excerpt":"Now that I believe I've resolved my hardware issues with my VMware server, I'm expecting to use it much more. I'm also continuing my exploration of the PowerCLI tool set which allows me to manage my virtual infrastructure from a Windows PowerShell session. One task that I frequently need is\u2026","rel":"","context":"In &quot;PowerCLI&quot;","block_context":{"text":"PowerCLI","link":"https:\/\/jdhitsolutions.com\/blog\/category\/powercli\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":621,"url":"https:\/\/jdhitsolutions.com\/blog\/powershell-v2-0\/621\/powercli-get-vmtoolsversion\/","url_meta":{"origin":2170,"position":3},"title":"PowerCLI Get-VMToolsVersion","author":"Jeffery Hicks","date":"April 9, 2010","format":false,"excerpt":"I recently was able to upgrade my VMware server so that I can now fully use the PowerCLI tool set. This is fantastic PowerShell goodness that I hope to use and write about much more in the future. Part of my upgrade process includes upgrading the VMToools install on the\u2026","rel":"","context":"In &quot;PowerCLI&quot;","block_context":{"text":"PowerCLI","link":"https:\/\/jdhitsolutions.com\/blog\/category\/powercli\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":2491,"url":"https:\/\/jdhitsolutions.com\/blog\/powershell\/2491\/hyper-v-vhd-summary\/","url_meta":{"origin":2170,"position":4},"title":"Hyper-V VHD Summary","author":"Jeffery Hicks","date":"September 14, 2012","format":false,"excerpt":"When I made the move to Windows 8, one of my tasks was to migrate my test environment from VirtualBox to Hyper-V. Windows 8 includes a client Hyper-V feature that is easy to use and includes PowerShell support. Plus I needed to expand my Hyper-V skills anyway, especially from the\u2026","rel":"","context":"In &quot;Hyper-V&quot;","block_context":{"text":"Hyper-V","link":"https:\/\/jdhitsolutions.com\/blog\/category\/hyper-v\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2012\/04\/computereye-150x150.png?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":2605,"url":"https:\/\/jdhitsolutions.com\/blog\/powershell\/2605\/copy-and-mount-a-cd-with-powercli\/","url_meta":{"origin":2170,"position":5},"title":"Copy and Mount a CD with PowerCLI","author":"Jeffery Hicks","date":"November 30, 2012","format":false,"excerpt":"The other day I realized I needed to rebuild my SQL Server 2012 installation which I'm running on a virtual machine running on an ESX box. Given that I have PowerCLI and I like to do things from the command prompt when I can, I decided to mount the SQL\u2026","rel":"","context":"In &quot;PowerCLI&quot;","block_context":{"text":"PowerCLI","link":"https:\/\/jdhitsolutions.com\/blog\/category\/powercli\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2012\/11\/PowerCLI-150x150.png?resize=350%2C200","width":350,"height":200},"classes":[]}],"_links":{"self":[{"href":"https:\/\/jdhitsolutions.com\/blog\/wp-json\/wp\/v2\/posts\/2170","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jdhitsolutions.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jdhitsolutions.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jdhitsolutions.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jdhitsolutions.com\/blog\/wp-json\/wp\/v2\/comments?post=2170"}],"version-history":[{"count":0,"href":"https:\/\/jdhitsolutions.com\/blog\/wp-json\/wp\/v2\/posts\/2170\/revisions"}],"wp:attachment":[{"href":"https:\/\/jdhitsolutions.com\/blog\/wp-json\/wp\/v2\/media?parent=2170"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jdhitsolutions.com\/blog\/wp-json\/wp\/v2\/categories?post=2170"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jdhitsolutions.com\/blog\/wp-json\/wp\/v2\/tags?post=2170"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}