{"id":777,"date":"2018-07-24T16:30:15","date_gmt":"2018-07-24T16:30:15","guid":{"rendered":"https:\/\/www.nicktailor.com\/?p=777"},"modified":"2020-09-15T19:30:02","modified_gmt":"2020-09-15T19:30:02","slug":"how-to-deploy-ansibleconfigure-powershell-script-on-windows","status":"publish","type":"post","link":"https:\/\/nicktailor.com\/tech-blog\/how-to-deploy-ansibleconfigure-powershell-script-on-windows\/","title":{"rendered":"How to deploy ansibleconfigure powershell script on windows"},"content":{"rendered":"<p style=\"margin-top: 0pt; padding-top: 0; margin-bottom: 8pt; padding-bottom: 0; line-height: 1.3;\">Okay fun stuff, so I tried this a number of ways which I will describe in this blog post.<\/p>\n<p style=\"margin-top: 0pt; padding-top: 0; margin-bottom: 8pt; padding-bottom: 0; line-height: 1.3;\">So if your windows server is joined to the domain and you have a machine that can reach all he virtual machines, WinRM is configured, and you have powershell 3.0 or higher setup.<\/p>\n<p style=\"margin-top: 0pt; padding-top: 0; margin-bottom: 8pt; padding-bottom: 0; line-height: 1.3;\">Then you could try the following powershell for loop from SYSVOL share<\/p>\n<div class=\"ol\" style=\"margin: 0;\">\n<div class=\"li\" style=\"margin: 0;\">\n<div style=\"margin-top: 0pt; padding-top: 0; margin-bottom: 0; padding-bottom: 0; line-height: 1.3; margin-left: 36pt;\"><span style=\"display: inline-block; position: relative; text-indent: -18pt;\">1.<\/span>You copy the ansibleconfigurescript.ps1 to SYSVOL on so all the joined machines can reach it or you can have it run locally from the joined machine.<\/div>\n<\/div>\n<div class=\"li\" style=\"margin: 0;\">\n<div style=\"margin-bottom: 0; padding-bottom: 0; line-height: 1.3; margin-left: 36pt;\"><span style=\"display: inline-block; position: relative; text-indent: -18pt;\">2.<\/span>Next you can use the following for loop in powershell that will basically loop through a text file with a list of all the hosts and run the powershell script<\/div>\n<p style=\"text-align: left; margin-bottom: 0; padding-bottom: 0; line-height: 1.3; margin-left: 72pt;\"><span style=\"display: inline-block; height: 1em;\"><span style=\"display: none;\">.<\/span><\/span><\/p>\n<p style=\"text-align: left; margin-bottom: 0; padding-bottom: 0; line-height: 1.3; margin-left: 72pt;\">Sample powershell For Loop<\/p>\n<div class=\"ul\" style=\"margin: 0;\">\n<div class=\"li\" style=\"margin: 0;\">\n<div style=\"margin-bottom: 0; padding-bottom: 0; line-height: 1.3; margin-left: 108pt;\"><span style=\"display: inline-block; position: relative; text-indent: -18pt;\"><span style=\"position: absolute; top: -0.34em; left: 0; font-size: 2em;\">\u2022<\/span>\u00a0<\/span>Hosts.csv \u2013 is servers name, 1 line each as such<\/div>\n<div class=\"ul\" style=\"margin: 0;\">\n<div class=\"li\" style=\"margin: 0;\">\n<div style=\"margin-bottom: 0; padding-bottom: 0; line-height: 1.3; margin-left: 144pt;\"><span style=\"display: inline-block; position: relative; text-indent: -18pt;\"><span style=\"position: absolute; top: -0.37em; left: 0; font-size: 2em;\">\u25e6<\/span>\u00a0<\/span>Nicktailor.server1.com,<\/div>\n<\/div>\n<div class=\"li\" style=\"margin: 0;\">\n<div style=\"margin-bottom: 0; padding-bottom: 0; line-height: 1.3; margin-left: 144pt;\"><span style=\"display: inline-block; position: relative; text-indent: -18pt;\"><span style=\"position: absolute; top: -0.37em; left: 0; font-size: 2em;\">\u25e6<\/span>\u00a0<\/span>Nicktailor.server2.com,<\/div>\n<\/div>\n<div class=\"li\" style=\"margin: 0;\">\n<div style=\"margin-bottom: 0; padding-bottom: 0; line-height: 1.3; margin-left: 144pt;\"><span style=\"display: inline-block; position: relative; text-indent: -18pt;\"><span style=\"position: absolute; top: -0.37em; left: 0; font-size: 2em;\">\u25e6<\/span>\u00a0<\/span>Etc<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"li\" style=\"margin: 0;\">\n<div style=\"margin-bottom: 0; padding-bottom: 0; line-height: 1.3; margin-left: 108pt;\"><span style=\"display: inline-block; position: relative; text-indent: -18pt;\"><span style=\"position: absolute; top: -0.34em; left: 0; font-size: 2em;\">\u2022<\/span>\u00a0<\/span>The script will also ask for admin credentials which you will need.<\/div>\n<\/div>\n<\/div>\n<p style=\"text-align: left; margin-bottom: 0; padding-bottom: 0; line-height: 1.3; margin-left: 72pt;\"><span style=\"display: inline-block; height: 1em;\"><span style=\"display: none;\">.<\/span><\/span><\/p>\n<p style=\"text-align: left; margin-bottom: 0; padding-bottom: 0; line-height: 1.3; margin-left: 72pt;\">powershell loop deploy \u2013 ask credentials<\/p>\n<p style=\"text-align: left; margin-bottom: 0; padding-bottom: 0; line-height: 1.3; margin-left: 72pt;\">$serverfiles=import-CSV &#8216;d:\\scripts\\hosts.csv&#8217;<\/p>\n<p style=\"text-align: left; margin-bottom: 0; padding-bottom: 0; line-height: 1.3; margin-left: 72pt;\">$cred = get-credential<\/p>\n<p style=\"text-align: left; margin-bottom: 0; padding-bottom: 0; line-height: 1.3; margin-left: 72pt;\">Foreach ($server in $serverfiles) {<\/p>\n<p style=\"text-align: left; margin-bottom: 0; padding-bottom: 0; line-height: 1.3; margin-left: 72pt;\">write-output $server.names<\/p>\n<p style=\"text-align: left; margin-bottom: 0; padding-bottom: 0; line-height: 1.3; margin-left: 72pt;\">invoke-command -computername $server.names -filepath d:\\scripts\\ansibleconfigure.ps1 -credential $cred<\/p>\n<p style=\"text-align: left; margin-bottom: 0; padding-bottom: 0; line-height: 1.3; margin-left: 72pt;\">}<\/p>\n<p style=\"text-align: left; margin-bottom: 0; padding-bottom: 0; line-height: 1.3; margin-left: 72pt;\"><span style=\"display: inline-block; height: 1em;\"><span style=\"display: none;\">.<\/span><\/span><\/p>\n<\/div>\n<div class=\"li\" style=\"margin: 0;\">\n<div style=\"margin-bottom: 0; padding-bottom: 0; line-height: 1.3; margin-left: 36pt;\"><span style=\"display: inline-block; position: relative; text-indent: -18pt;\">3.<\/span>Now you can open up powershell console as administrator save the above into a file and run it.<\/div>\n<div class=\"ol\" style=\"margin: 0;\">\n<div class=\"li\" style=\"margin: 0;\">\n<div style=\"margin-bottom: 8pt; padding-bottom: 0; line-height: 1.3; margin-left: 72pt;\"><span style=\"display: inline-block; position: relative; text-indent: -18pt;\">a.<\/span>.\/deployloop \u2013 Watch the output for error<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p style=\"margin-top: 0pt; padding-top: 0; margin-bottom: 8pt; padding-bottom: 0; line-height: 1.3;\">Note: This method sucked and failed for me due to WinRM not being there and other restrictions like host having. The other was I\u2019m not exactly powershell intermediate had to muddle around a lot.<\/p>\n<div class=\"ul\" style=\"margin: 0;\">\n<div class=\"li\" style=\"margin: 0;\">\n<div style=\"margin-top: 0pt; padding-top: 0; margin-bottom: 0; padding-bottom: 0; line-height: 1.3; margin-left: 108pt;\"><span style=\"display: inline-block; position: relative; text-indent: -18pt;\"><span style=\"position: absolute; top: -0.34em; left: 0; font-size: 2em;\">\u2022<\/span>\u00a0<\/span>set-executionpolicy -ExecutionPolicy restricted<\/div>\n<\/div>\n<div class=\"li\" style=\"margin: 0;\">\n<div style=\"margin-bottom: 8pt; padding-bottom: 0; line-height: 1.3; margin-left: 108pt;\"><span style=\"display: inline-block; position: relative; text-indent: -18pt;\"><span style=\"position: absolute; top: -0.34em; left: 0; font-size: 2em;\">\u2022<\/span>\u00a0<\/span>set-executionpolicy -ExecutionPolicy unrestricted<\/div>\n<\/div>\n<\/div>\n<p style=\"margin-top: 0pt; padding-top: 0; margin-bottom: 8pt; padding-bottom: 0; line-height: 1.3;\"><span style=\"display: inline-block; height: 1em;\"><span style=\"display: none;\">.<\/span><\/span><\/p>\n<div class=\"ol\" style=\"margin: 0;\">\n<div class=\"li\" style=\"margin: 0;\">\n<div style=\"margin-top: 0pt; padding-top: 0; margin-bottom: 0; padding-bottom: 0; line-height: 1.3; margin-left: 36pt;\"><span style=\"display: inline-block; position: relative; text-indent: -18pt;\">4.<\/span>So this brings us to how to deploying the script via GPO(group policy object) from the DC.<\/div>\n<p style=\"text-align: left; margin-bottom: 0; padding-bottom: 0; line-height: 1.3; margin-left: 36pt;\">What you want to do here is copy the configure script to SYSVOL so all the joined machines can reach the script.<\/p>\n<p style=\"text-align: left; margin-bottom: 0; padding-bottom: 0; line-height: 1.3; margin-left: 72pt;\"><span style=\"display: inline-block; height: 1em;\"><span style=\"display: none;\">.<\/span><\/span><\/p>\n<p style=\"text-align: left; margin-bottom: 0; padding-bottom: 0; line-height: 1.3; margin-left: 72pt;\">In the search bar type: (replace domain to match)<\/p>\n<div class=\"ul\" style=\"margin: 0;\">\n<div class=\"li\" style=\"margin: 0;\">\n<div style=\"margin-bottom: 0; padding-bottom: 0; line-height: 1.3; margin-left: 108pt;\"><span style=\"display: inline-block; position: relative; text-indent: -18pt;\"><span style=\"position: absolute; top: -0.34em; left: 0; font-size: 2em;\">\u2022<\/span>\u00a0<\/span><a href=\"file:\/\/\/%5C%5Chome.nickatilor.com%5CSYSVOL\">\\\\home.nickatilor.com\\SYSVOL<\/a><\/div>\n<\/div>\n<div class=\"li\" style=\"margin: 0;\">\n<div style=\"margin-bottom: 0; padding-bottom: 0; line-height: 1.3; margin-left: 108pt;\"><span style=\"display: inline-block; position: relative; text-indent: -18pt;\"><span style=\"position: absolute; top: -0.34em; left: 0; font-size: 2em;\">\u2022<\/span>\u00a0<\/span>Copy ansibleconfigure.ps1 inside here.<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"li\" style=\"margin: 0;\">\n<div style=\"margin-bottom: 8pt; padding-bottom: 0; line-height: 1.3; margin-left: 36pt;\"><span style=\"display: inline-block; position: relative; text-indent: -18pt;\">5.<\/span>Next you will setup the GPO to deploy on startup as this is the only way the script will work, logon did not appear to work for me.<\/div>\n<\/div>\n<div class=\"li\" style=\"margin: 0;\">\n<div style=\"margin-top: 0pt; padding-top: 0; margin-bottom: 7.5pt; padding-bottom: 0; line-height: 1.2; font-size: 12pt; margin-left: 36pt;\"><span style=\"display: inline-block; position: relative; text-indent: -18pt; color: #333333; font-size: 10.5pt;\">6.<\/span><span style=\"color: #333333;\">To do this, I decided to create a new\u00a0<\/span><a href=\"http:\/\/blogs.technet.com\/b\/heyscriptingguy\/archive\/tags\/windows+powershell\/group+policy\/\"><span style=\"color: #969696;\">Group Policy<\/span><\/a><span style=\"color: #333333;\">\u00a0object (GPO) and link it to my nicktailor.com domain in my forest. In the Group Policy Management Editor, I right-click the domain, and then click\u00a0<\/span><strong><span style=\"color: #333333;\">Create a GPO<\/span><\/strong><span style=\"color: #333333;\">\u00a0in this domain. This is shown in the following image.<\/span><\/div>\n<\/div>\n<div class=\"li\" style=\"margin: 0;\">\n<div style=\"margin-top: 0pt; padding-top: 0; margin-bottom: 7.5pt; padding-bottom: 0; line-height: 1.2; font-size: 12pt; margin-left: 36pt;\"><span style=\"display: inline-block; position: relative; text-indent: -18pt; color: #333333; font-size: 10.5pt;\">7.<\/span><span style=\"color: #969696;\"><a href=\"https:\/\/msdnshared.blob.core.windows.net\/media\/TNBlogsFS\/prod.evol.blogs.technet.com\/CommunityServer.Blogs.Components.WeblogFiles\/00\/00\/00\/76\/18\/metablogapi\/0363.wes081410021_73C08C22.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"604\" height=\"424\" class=\"wp-image-1048 size-full\" src=\"http:\/\/www.nicktailor.com\/wp-content\/uploads\/2020\/06\/Picture-1.jpeg\" alt=\"Image of start of process to create GPO\" srcset=\"https:\/\/nicktailor.com\/tech-blog\/wp-content\/uploads\/2020\/06\/Picture-1.jpeg 604w, https:\/\/nicktailor.com\/tech-blog\/wp-content\/uploads\/2020\/06\/Picture-1-600x421.jpeg 600w, https:\/\/nicktailor.com\/tech-blog\/wp-content\/uploads\/2020\/06\/Picture-1-300x211.jpeg 300w, https:\/\/nicktailor.com\/tech-blog\/wp-content\/uploads\/2020\/06\/Picture-1-504x354.jpeg 504w\" sizes=\"auto, (max-width: 604px) 100vw, 604px\" \/><\/a><\/span><\/div>\n<\/div>\n<div class=\"li\" style=\"margin: 0;\">\n<div style=\"margin-top: 0pt; padding-top: 0; margin-bottom: 7.5pt; padding-bottom: 0; line-height: 1.2; font-size: 12pt; margin-left: 36pt;\"><span style=\"display: inline-block; position: relative; text-indent: -18pt; color: #333333; font-size: 10.5pt;\">8.<\/span><span style=\"color: #333333;\">Right-clicking the newly created GPO in the Group Policy Management Console and clicking\u00a0<\/span><strong><span style=\"color: #333333;\">Edit<\/span><\/strong><span style=\"color: #333333;\">\u00a0opens the Group Policy Management Editor, which is shown in the following image. Because I am interested in tracking not only processes that start after the user logs onto the computer but also processes that start before the logon screen, I configure a logon script for the user. There are <\/span><span style=\"color: #333333;\">startup<\/span><span style=\"color: #333333;\"> and shutdown scripts that can be configured in Group Policy that are assigned at the computer configuration level, but they would not be the best place to obtain the information I\u2019m looking for. To set a user logon script, open the User Configuration node of the Group Policy Editor, click\u00a0<\/span><strong><span style=\"color: #333333;\">Windows Settings<\/span><\/strong><span style=\"color: #333333;\">\u00a0and then click\u00a0<\/span><strong><span style=\"color: #333333;\">Scripts (Logon\/Logoff)<\/span><\/strong><span style=\"color: #333333;\">.<\/span><\/div>\n<\/div>\n<div class=\"li\" style=\"margin: 0;\">\n<div style=\"margin-top: 0pt; padding-top: 0; margin-bottom: 7.5pt; padding-bottom: 0; line-height: 1.2; font-size: 12pt; margin-left: 36pt;\"><span style=\"display: inline-block; position: relative; text-indent: -18pt; color: #333333; font-size: 10.5pt;\">9.<\/span><span style=\"color: #969696;\"><a href=\"https:\/\/msdnshared.blob.core.windows.net\/media\/TNBlogsFS\/prod.evol.blogs.technet.com\/CommunityServer.Blogs.Components.WeblogFiles\/00\/00\/00\/76\/18\/metablogapi\/3122.wes081410031_4BADDD03.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"604\" height=\"374\" class=\"wp-image-1049 size-full\" src=\"http:\/\/www.nicktailor.com\/wp-content\/uploads\/2020\/06\/Picture-2.jpeg\" alt=\"Image of Scripts (Logon\/Logoff) window\" srcset=\"https:\/\/nicktailor.com\/tech-blog\/wp-content\/uploads\/2020\/06\/Picture-2.jpeg 604w, https:\/\/nicktailor.com\/tech-blog\/wp-content\/uploads\/2020\/06\/Picture-2-600x372.jpeg 600w, https:\/\/nicktailor.com\/tech-blog\/wp-content\/uploads\/2020\/06\/Picture-2-300x186.jpeg 300w, https:\/\/nicktailor.com\/tech-blog\/wp-content\/uploads\/2020\/06\/Picture-2-572x354.jpeg 572w\" sizes=\"auto, (max-width: 604px) 100vw, 604px\" \/><\/a><\/span><\/div>\n<\/div>\n<div class=\"li\" style=\"margin: 0;\">\n<div style=\"margin-top: 0pt; padding-top: 0; margin-bottom: 7.5pt; padding-bottom: 0; line-height: 1.2; font-size: 12pt; margin-left: 36pt;\"><span style=\"display: inline-block; position: relative; text-indent: -18pt; color: #333333; font-size: 10.5pt;\">10.<\/span><span style=\"color: #333333;\">I double-click\u00a0<\/span><strong><span style=\"color: #333333;\">Logon<\/span><\/strong><span style=\"color: #333333;\">\u00a0in the right side of the pane, and click the\u00a0<\/span><strong><span style=\"color: #333333;\">PowerShell Scripts<\/span><\/strong><span style=\"color: #333333;\">\u00a0tab as shown in the following image.<\/span><\/div>\n<p style=\"text-align: left; margin-top: 0pt; padding-top: 0; margin-bottom: 0; padding-bottom: 0; line-height: 1.3; margin-left: 36pt;\"><img loading=\"lazy\" decoding=\"async\" width=\"416\" height=\"466\" class=\"wp-image-1050 size-full\" src=\"http:\/\/www.nicktailor.com\/wp-content\/uploads\/2020\/06\/Picture-1-1.jpeg\" alt=\"https:\/\/content.spiceworksstatic.com\/service.community\/p\/post_images\/0000225641\/588b7c03\/attached_image\/Capture.JPG\" srcset=\"https:\/\/nicktailor.com\/tech-blog\/wp-content\/uploads\/2020\/06\/Picture-1-1.jpeg 416w, https:\/\/nicktailor.com\/tech-blog\/wp-content\/uploads\/2020\/06\/Picture-1-1-268x300.jpeg 268w, https:\/\/nicktailor.com\/tech-blog\/wp-content\/uploads\/2020\/06\/Picture-1-1-300x336.jpeg 300w, https:\/\/nicktailor.com\/tech-blog\/wp-content\/uploads\/2020\/06\/Picture-1-1-316x354.jpeg 316w\" sizes=\"auto, (max-width: 416px) 100vw, 416px\" \/><\/p>\n<p style=\"text-align: left; margin-bottom: 0; padding-bottom: 0; line-height: 1.3; margin-left: 36pt;\"><span style=\"display: inline-block; height: 1em;\"><span style=\"display: none;\">.<\/span><\/span><\/p>\n<\/div>\n<div class=\"li\" style=\"margin: 0;\">\n<div style=\"margin-bottom: 0; padding-bottom: 0; line-height: 1.3; margin-left: 36pt;\"><span style=\"display: inline-block; position: relative; text-indent: -18pt;\">11.<\/span>Make sure you edit the script path so that it reads the SYSVOL path where its says<\/div>\n<p style=\"text-align: left; margin-bottom: 0; padding-bottom: 0; line-height: 1.3; margin-left: 72pt;\"><strong><em>script name<\/em><\/strong><\/p>\n<div class=\"ul\" style=\"margin: 0;\">\n<div class=\"li\" style=\"margin: 0;\">\n<div style=\"margin-bottom: 8pt; padding-bottom: 0; line-height: 1.3; margin-left: 72pt;\"><span style=\"display: inline-block; position: relative; text-indent: -18pt;\"><span style=\"position: absolute; top: -0.34em; left: 0; font-size: 2em;\">\u2022<\/span>\u00a0<\/span><a href=\"file:\/\/\/%5C%5Chome.nicktailor.com%5CSysVol%5Chome.nicktailor.com%5Cscripts%5Cansibleconfigure.ps1\">\\\\home.nicktailor.com\\SysVol\\home.nicktailor.com\\scripts\\ansibleconfigure.ps1<\/a><\/div>\n<\/div>\n<\/div>\n<p style=\"text-align: left; margin-top: 0pt; padding-top: 0; margin-bottom: 8pt; padding-bottom: 0; line-height: 1.3; margin-left: 54pt;\"><img loading=\"lazy\" decoding=\"async\" width=\"815\" height=\"586\" class=\"wp-image-1051 size-full\" src=\"http:\/\/www.nicktailor.com\/wp-content\/uploads\/2020\/06\/Picture-3.png\" alt=\"Image result for GPO powershell edit path\" srcset=\"https:\/\/nicktailor.com\/tech-blog\/wp-content\/uploads\/2020\/06\/Picture-3.png 815w, https:\/\/nicktailor.com\/tech-blog\/wp-content\/uploads\/2020\/06\/Picture-3-600x431.png 600w, https:\/\/nicktailor.com\/tech-blog\/wp-content\/uploads\/2020\/06\/Picture-3-300x216.png 300w, https:\/\/nicktailor.com\/tech-blog\/wp-content\/uploads\/2020\/06\/Picture-3-768x552.png 768w, https:\/\/nicktailor.com\/tech-blog\/wp-content\/uploads\/2020\/06\/Picture-3-492x354.png 492w\" sizes=\"auto, (max-width: 815px) 100vw, 815px\" \/><\/p>\n<\/div>\n<div class=\"li\" style=\"margin: 0;\">\n<div style=\"margin-top: 0pt; padding-top: 0; margin-bottom: 0; padding-bottom: 0; line-height: 1.3; margin-left: 36pt;\"><span style=\"display: inline-block; position: relative; text-indent: -18pt;\">12.<\/span>Next when the servers reboot you should be able to check the windows application logs for id=1 to see if the script ran in the event viewer or use<\/div>\n<div class=\"ol\" style=\"margin: 0;\">\n<div class=\"li\" style=\"margin: 0;\">\n<div style=\"margin-bottom: 8pt; padding-bottom: 0; line-height: 1.3; margin-left: 72pt;\"><span style=\"display: inline-block; position: relative; text-indent: -18pt;\">b.<\/span>gpresult \/r (should show the objects applied)<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Okay fun stuff, so I tried this a number of ways which I will describe in this blog post. So if your windows server is joined to the domain and you have a machine that can reach all he virtual machines, WinRM is configured, and you have powershell 3.0 or higher setup. Then you could try the following powershell for<a href=\"https:\/\/nicktailor.com\/tech-blog\/how-to-deploy-ansibleconfigure-powershell-script-on-windows\/\" class=\"read-more\">Read More &#8230;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[31,51,53,54],"tags":[],"class_list":["post-777","post","type-post","status-publish","format-standard","hentry","category-active-directory","category-ansible","category-gpo","category-powershell"],"_links":{"self":[{"href":"https:\/\/nicktailor.com\/tech-blog\/wp-json\/wp\/v2\/posts\/777","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nicktailor.com\/tech-blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nicktailor.com\/tech-blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nicktailor.com\/tech-blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/nicktailor.com\/tech-blog\/wp-json\/wp\/v2\/comments?post=777"}],"version-history":[{"count":16,"href":"https:\/\/nicktailor.com\/tech-blog\/wp-json\/wp\/v2\/posts\/777\/revisions"}],"predecessor-version":[{"id":1137,"href":"https:\/\/nicktailor.com\/tech-blog\/wp-json\/wp\/v2\/posts\/777\/revisions\/1137"}],"wp:attachment":[{"href":"https:\/\/nicktailor.com\/tech-blog\/wp-json\/wp\/v2\/media?parent=777"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nicktailor.com\/tech-blog\/wp-json\/wp\/v2\/categories?post=777"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nicktailor.com\/tech-blog\/wp-json\/wp\/v2\/tags?post=777"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}