{"id":1335,"date":"2011-04-11T09:30:37","date_gmt":"2011-04-11T13:30:37","guid":{"rendered":"http:\/\/jdhitsolutions.com\/blog\/?p=1335"},"modified":"2013-05-01T07:03:57","modified_gmt":"2013-05-01T11:03:57","slug":"scripting-games-2011-notes-from-the-field","status":"publish","type":"post","link":"https:\/\/jdhitsolutions.com\/blog\/scripting\/1335\/scripting-games-2011-notes-from-the-field\/","title":{"rendered":"Scripting Games 2011 Notes from the Field"},"content":{"rendered":"<p>I've been making headway in reviewing and judging entries in the 2011 Scripting Games. I know there has been a lot of discussion about the lack of comments and I'm doing what I can with entries I judge, but I'm not guaranteeing anything. What I will do is put down some overall comments and impressions that I hope you can use for the remaining events.<!--more--><\/p>\n<p>Overall, I must say the caliber of PowerShell is much improved over years past. I don't see as many scripts that are PowerShell versions of VBScript. People are really getting the PowerShell paradigm. One thing that might still be eluding some is that writing code that you would use in an interactive session and something you want to re-use in a script are two different animals. When using PowerShell in an interactive session, the goal is efficiency: getting the job done with the least amount of effort and manually handling problems or errors as they arise. When writing a script you are writing PowerShell that can be re-used by yourself and others. You should only have to write it once.<\/p>\n<p>All of that said, here is what I'm looking for in an entry.<\/p>\n<p><strong>For Everyone<\/strong><br \/>\nAvoid the use of aliases and use full cmdlet names. I can make an exception for well-known aliases like DIR. But does everyone looking at your code really know what % or iex refer to? I would like to see this concept extended to parameters as well. Use full parameter names, even if they are positional. The goal is clarity. There is no performance penalty for the number of characters in a PowerShell expression.<\/p>\n<p>There should be plenty of comments throughout the script that explain what the script is doing. You don't need to write War and Peace but I should be able to tell what a section of code will do. Comments are also critical if you script has several scripts and is jumping around. Otherwise it is hard to follow the flow. But don't write comments just to have a comment.<\/p>\n<p>Variable names should  be meaningful. Scrolling down in a long script I may forget what $c is, but $computername I can figure out.  While on this subject, I always recommend using names that are used throughout PowerShell. Thus, use $computername, not $server or $sys or whatever. Write your code so that it is consistent with the rest of PowerShell. It makes it easier to follow and integrate.<\/p>\n<p>I'd like to see at least basic error handling. For beginners, take advantage of some of the Test cmdlets and use an If construct. By the way, when testing a Boolean you don't need to use a comparison operator.<\/p>\n<pre class=\"lang:default decode:true \" >$b=$True\"\r\nif ($b -eq \"True\") {\r\n #do something\r\n}<\/pre>\n<p>Because constructs lke IF and WHERE are designed to evaluate expressions looking for True or False, all you need to do is express the variable.<\/p>\n<pre class=\"lang:default decode:true \" >$b=$True\"\r\nif ($b) {\r\n #do something\r\n}\r\n#or if you want to check the inverse\r\nif (-NOT $b) {\r\n #do something\r\n}<\/pre>\n<p>The last thing that I really look for is if the script works with objects. Using Write-Host to display some information is OK I suppose for the most simplest of tasks but it is limiting. Because Write-Host doesn't send data to the pipeline you can't format, export, sort, group, convert or do anything else with it. I like Write-Host for progress messages, especially when using a foreground or background color so I can differentiate messages from output.  <\/p>\n<p>Related to the quest for objects is the continued use I see of the RETURN keyword. In PowerShell this is potentially problematic. Don't think about returning a value, thing writing objects to the pipeline. In case you didn't know, when PowerShell encounters RETURN, it writes \"value\" to the pipeline and stops. If there is more data or more to your script it never executes. Here's an example.<\/p>\n<pre class=\"lang:default decode:true \" >$Processes=Get-Process\r\n  ForEach ($process in $Processes) {\r\n    $isPrivateBuild = (Get-Process -ID $process.id -FileVersionInfo).IsPrivateBuild\r\n    $obj=New-Object -TypeName PSobject -Property @{\r\n      ID = $process.ID\r\n      Name=$process.ProcessName\r\n      Computername=$process.machinename\r\n      PrivateBuild=$isPrivateBuild\r\n    }\r\n    Return $obj\r\n  }\r\n<\/pre>\n<p>This will only return a single object.  Instead do something like this:<\/p>\n<pre class=\"lang:default decode:true \" >$Processes=Get-Process\r\n  ForEach ($process in $Processes) {\r\n    $isPrivateBuild = (Get-Process -ID $process.id -FileVersionInfo).IsPrivateBuild\r\n    $obj=New-Object -TypeName PSobject -Property @{\r\n      ID = $process.ID\r\n      Name=$process.ProcessName\r\n      Computername=$process.machinename\r\n      PrivateBuild=$isPrivateBuild\r\n    }\r\n    Write-Output $obj\r\n  }\r\n<\/pre>\n<p><strong>Beginners<\/strong><br \/>\nFor beginners another common problem I see is using Get-WMIObject to get the local computername. Instead use $env:comptername to retrieve the %COMPUTERNAME% environmental variable.<\/p>\n<p>When breaking lines you don't need to use the backtick after anything that PowerShell knows needs to be completed. If you have a long line you want to break, just press return after an opening {, ( or |. You should only need the backtick when you are breaking a line in a spot that PowerShell isn't expecting.<\/p>\n<p>Finally, look at your script. How much rewriting would it take for someone else to run it? How flexible or re-usable is it? The more that you can meet that need the more extra points you'll likely score.<\/p>\n<p><strong>Advanced<\/strong><br \/>\nFor advanced events I think you should have good comment based help, should be using advanced parameter attributes and complex error handling in addition to everything I've mentioned above. I also look for more modularity and the use of functions.  Even more so with this group I look for code that is flexible and resilient. I shouldn't have to go back and modify hard coded values to get your script to work.<\/p>\n<p>However, even though I look for a lot from an advanced entry there is a fine line between complexity for the sake of complexity and code or comments that contribute clarity and value.  For me, a script that will warrant a 4 or 5 will have a certain degree of elegance, which I know is a subjective element but you know it when you see it. And I certainly don't claim that everything I write and publish is elegant by any means. For me, elegance means that the script leverages PowerShell's strengths with the just the write amount of all the elements we look for in a script, that gets the job done. I suppose elegance goes hand in hand with efficiency and I don't mean constructing a one line expression. I've seen some scripts that for lack of a better term feel heavy handed. Yes, they may get the job done but it feels like a kitchen sink approach: let me throw in all the techniques I know. Even with comments these scripts are hard to decipher and I wouldn't look forward to debugging one.<\/p>\n<p>In summary I encourage you to address these concepts in your PowerShell scripting:<\/p>\n<p>1. Functionality: Does it work?<br \/>\n2. Objects: What are you writing to the pipeline?<br \/>\n3. Clarity: Are your using full cmdlet and parameter names? Are there comments? What are your variable names? Can I \"read\" your script?<br \/>\n4. Re-Use: Are you hard coding values? How flexible is your code?<br \/>\n5. Elegance: This is almost a Zen-like element. Is there a balance between what is written and what is really required?<\/p>\n<p>I look forward to the rest of the games and wish everyone the best of luck.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;ve been making headway in reviewing and judging entries in the 2011 Scripting Games. I know there has been a lot of discussion about the lack of comments and I&#8217;m doing what I can with entries I judge, but I&#8217;m not guaranteeing anything. What I will do is put down some overall comments and impressions&#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":[60,75,8],"tags":[552,534,540,274],"class_list":["post-1335","post","type-post","status-publish","format-standard","hentry","category-best-practices","category-powershell-v2-0","category-scripting","tag-best-practices","tag-powershell","tag-scripting","tag-scripting-games"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Scripting Games 2011 Notes from the Field &#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\/scripting\/1335\/scripting-games-2011-notes-from-the-field\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Scripting Games 2011 Notes from the Field &#8226; The Lonely Administrator\" \/>\n<meta property=\"og:description\" content=\"I&#039;ve been making headway in reviewing and judging entries in the 2011 Scripting Games. I know there has been a lot of discussion about the lack of comments and I&#039;m doing what I can with entries I judge, but I&#039;m not guaranteeing anything. What I will do is put down some overall comments and impressions...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jdhitsolutions.com\/blog\/scripting\/1335\/scripting-games-2011-notes-from-the-field\/\" \/>\n<meta property=\"og:site_name\" content=\"The Lonely Administrator\" \/>\n<meta property=\"article:published_time\" content=\"2011-04-11T13:30:37+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2013-05-01T11:03:57+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=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/scripting\\\/1335\\\/scripting-games-2011-notes-from-the-field\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/scripting\\\/1335\\\/scripting-games-2011-notes-from-the-field\\\/\"},\"author\":{\"name\":\"Jeffery Hicks\",\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/#\\\/schema\\\/person\\\/d0258030b41f07fd745f4078bdf5b6c9\"},\"headline\":\"Scripting Games 2011 Notes from the Field\",\"datePublished\":\"2011-04-11T13:30:37+00:00\",\"dateModified\":\"2013-05-01T11:03:57+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/scripting\\\/1335\\\/scripting-games-2011-notes-from-the-field\\\/\"},\"wordCount\":1128,\"commentCount\":3,\"publisher\":{\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/#\\\/schema\\\/person\\\/d0258030b41f07fd745f4078bdf5b6c9\"},\"keywords\":[\"Best Practices\",\"PowerShell\",\"Scripting\",\"Scripting Games\"],\"articleSection\":[\"Best Practices\",\"PowerShell v2.0\",\"Scripting\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/scripting\\\/1335\\\/scripting-games-2011-notes-from-the-field\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/scripting\\\/1335\\\/scripting-games-2011-notes-from-the-field\\\/\",\"url\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/scripting\\\/1335\\\/scripting-games-2011-notes-from-the-field\\\/\",\"name\":\"Scripting Games 2011 Notes from the Field &#8226; The Lonely Administrator\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/#website\"},\"datePublished\":\"2011-04-11T13:30:37+00:00\",\"dateModified\":\"2013-05-01T11:03:57+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/scripting\\\/1335\\\/scripting-games-2011-notes-from-the-field\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/scripting\\\/1335\\\/scripting-games-2011-notes-from-the-field\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/scripting\\\/1335\\\/scripting-games-2011-notes-from-the-field\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Best Practices\",\"item\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/category\\\/best-practices\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Scripting Games 2011 Notes from the Field\"}]},{\"@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":"Scripting Games 2011 Notes from the Field &#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\/scripting\/1335\/scripting-games-2011-notes-from-the-field\/","og_locale":"en_US","og_type":"article","og_title":"Scripting Games 2011 Notes from the Field &#8226; The Lonely Administrator","og_description":"I've been making headway in reviewing and judging entries in the 2011 Scripting Games. I know there has been a lot of discussion about the lack of comments and I'm doing what I can with entries I judge, but I'm not guaranteeing anything. What I will do is put down some overall comments and impressions...","og_url":"https:\/\/jdhitsolutions.com\/blog\/scripting\/1335\/scripting-games-2011-notes-from-the-field\/","og_site_name":"The Lonely Administrator","article_published_time":"2011-04-11T13:30:37+00:00","article_modified_time":"2013-05-01T11:03:57+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":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jdhitsolutions.com\/blog\/scripting\/1335\/scripting-games-2011-notes-from-the-field\/#article","isPartOf":{"@id":"https:\/\/jdhitsolutions.com\/blog\/scripting\/1335\/scripting-games-2011-notes-from-the-field\/"},"author":{"name":"Jeffery Hicks","@id":"https:\/\/jdhitsolutions.com\/blog\/#\/schema\/person\/d0258030b41f07fd745f4078bdf5b6c9"},"headline":"Scripting Games 2011 Notes from the Field","datePublished":"2011-04-11T13:30:37+00:00","dateModified":"2013-05-01T11:03:57+00:00","mainEntityOfPage":{"@id":"https:\/\/jdhitsolutions.com\/blog\/scripting\/1335\/scripting-games-2011-notes-from-the-field\/"},"wordCount":1128,"commentCount":3,"publisher":{"@id":"https:\/\/jdhitsolutions.com\/blog\/#\/schema\/person\/d0258030b41f07fd745f4078bdf5b6c9"},"keywords":["Best Practices","PowerShell","Scripting","Scripting Games"],"articleSection":["Best Practices","PowerShell v2.0","Scripting"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/jdhitsolutions.com\/blog\/scripting\/1335\/scripting-games-2011-notes-from-the-field\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/jdhitsolutions.com\/blog\/scripting\/1335\/scripting-games-2011-notes-from-the-field\/","url":"https:\/\/jdhitsolutions.com\/blog\/scripting\/1335\/scripting-games-2011-notes-from-the-field\/","name":"Scripting Games 2011 Notes from the Field &#8226; The Lonely Administrator","isPartOf":{"@id":"https:\/\/jdhitsolutions.com\/blog\/#website"},"datePublished":"2011-04-11T13:30:37+00:00","dateModified":"2013-05-01T11:03:57+00:00","breadcrumb":{"@id":"https:\/\/jdhitsolutions.com\/blog\/scripting\/1335\/scripting-games-2011-notes-from-the-field\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jdhitsolutions.com\/blog\/scripting\/1335\/scripting-games-2011-notes-from-the-field\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jdhitsolutions.com\/blog\/scripting\/1335\/scripting-games-2011-notes-from-the-field\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Best Practices","item":"https:\/\/jdhitsolutions.com\/blog\/category\/best-practices\/"},{"@type":"ListItem","position":2,"name":"Scripting Games 2011 Notes from the Field"}]},{"@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":3722,"url":"https:\/\/jdhitsolutions.com\/blog\/powershell\/3722\/reflections-on-the-powershell-scripting-games\/","url_meta":{"origin":1335,"position":0},"title":"Reflections on the PowerShell Scripting Games","author":"Jeffery Hicks","date":"February 26, 2014","format":false,"excerpt":"During the most recent PowerShell Scripting Games, I was fortunate enough to be one of the judges. Now that the games have concluded I thought I'd share my reflections on the entries. Naturally these are merely my opinions but they are drawn from years of experience with PowerShell and almost\u2026","rel":"","context":"In &quot;Best Practices&quot;","block_context":{"text":"Best Practices","link":"https:\/\/jdhitsolutions.com\/blog\/category\/best-practices\/"},"img":{"alt_text":"talkbubble","src":"https:\/\/i0.wp.com\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2011\/10\/talkbubble.png?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":2175,"url":"https:\/\/jdhitsolutions.com\/blog\/powershell\/2175\/try-and-catch-me-if-you-can\/","url_meta":{"origin":1335,"position":1},"title":"Try and Catch Me If You Can","author":"Jeffery Hicks","date":"April 5, 2012","format":false,"excerpt":"In looking at entries in this year's Scripting Games, as well as posts I see in PowerShell forums, I thought I'd post a short guide to properly using Try\/Catch. This is the way I think it should be used. Let's start with a Try\/Catch block that might look ok. Try\u2026","rel":"","context":"In &quot;PowerShell&quot;","block_context":{"text":"PowerShell","link":"https:\/\/jdhitsolutions.com\/blog\/category\/powershell\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3019,"url":"https:\/\/jdhitsolutions.com\/blog\/powershell\/3019\/powershell-scripting-games-2013-impressions\/","url_meta":{"origin":1335,"position":2},"title":"PowerShell Scripting Games 2013 Impressions","author":"Jeffery Hicks","date":"May 13, 2013","format":false,"excerpt":"Now that the PowerShell Scripting Games for 2013 are well underway, I thought I'd share my thoughts and impressions on what I've seen. I'm very impressed with the number of entries and generally the quality is pretty good. But as a judge I see repeated items that bear comment. These\u2026","rel":"","context":"In &quot;PowerShell&quot;","block_context":{"text":"PowerShell","link":"https:\/\/jdhitsolutions.com\/blog\/category\/powershell\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/scriptinggames.org\/games-logo.png?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":6142,"url":"https:\/\/jdhitsolutions.com\/blog\/powershell\/6142\/join-me-for-a-2-day-powershell-scripting-workshop\/","url_meta":{"origin":1335,"position":3},"title":"Join Me for a 2 Day PowerShell Scripting Workshop","author":"Jeffery Hicks","date":"November 12, 2018","format":false,"excerpt":"I am very happy to announce a 2 day public PowerShell learning event. In association with the fine people behind the Techmentor conference, I will be presenting a 2 day PowerShell Scripting workshop in Dallas, TX on February 4-5, 2019. There is an option to attend virtually, but you'll really\u2026","rel":"","context":"In &quot;PowerShell&quot;","block_context":{"text":"PowerShell","link":"https:\/\/jdhitsolutions.com\/blog\/category\/powershell\/"},"img":{"alt_text":"announcer-blue","src":"https:\/\/i0.wp.com\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2018\/11\/announcer-blue_thumb.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":3117,"url":"https:\/\/jdhitsolutions.com\/blog\/scripting\/3117\/msdevwny-powershell-advanced-functions\/","url_meta":{"origin":1335,"position":4},"title":"MSDevWNY PowerShell Advanced Functions","author":"Jeffery Hicks","date":"June 20, 2013","format":false,"excerpt":"Last night I presented for the MSDevWNY user group in the Buffalo, NY area. They were an interested and enthusiastic audience and I think we could have spent another few hours talking about PowerShell. My presentation was one I've given before on Advanced PowerShell functions. I promised the group a\u2026","rel":"","context":"In &quot;Best Practices&quot;","block_context":{"text":"Best Practices","link":"https:\/\/jdhitsolutions.com\/blog\/category\/best-practices\/"},"img":{"alt_text":"talkbubble-v3","src":"https:\/\/i0.wp.com\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2012\/05\/talkbubble-v3-150x150.png?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":1036,"url":"https:\/\/jdhitsolutions.com\/blog\/powershell\/1036\/join-me-in-orlando\/","url_meta":{"origin":1335,"position":5},"title":"Join Me in Orlando","author":"Jeffery Hicks","date":"December 30, 2010","format":false,"excerpt":"I will be presenting 3 sessions at Techmentor Orlando 2011. The conference runs March 14-18, 2011 at the Disney Yacht Club. My sessions are all on Wednesday March 16. In addition to all the other fabulous material at the conference I will be presenting the following: PowerShell Scripting Best Practices\u2026","rel":"","context":"In &quot;Active Directory&quot;","block_context":{"text":"Active Directory","link":"https:\/\/jdhitsolutions.com\/blog\/category\/active-directory\/"},"img":{"alt_text":"Disney Yacht Club","src":"https:\/\/i0.wp.com\/techmentorevents.com\/design\/ecg\/techmentorevents\/home\/img\/portal_2011spring.gif?resize=350%2C200","width":350,"height":200},"classes":[]}],"_links":{"self":[{"href":"https:\/\/jdhitsolutions.com\/blog\/wp-json\/wp\/v2\/posts\/1335","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=1335"}],"version-history":[{"count":0,"href":"https:\/\/jdhitsolutions.com\/blog\/wp-json\/wp\/v2\/posts\/1335\/revisions"}],"wp:attachment":[{"href":"https:\/\/jdhitsolutions.com\/blog\/wp-json\/wp\/v2\/media?parent=1335"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jdhitsolutions.com\/blog\/wp-json\/wp\/v2\/categories?post=1335"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jdhitsolutions.com\/blog\/wp-json\/wp\/v2\/tags?post=1335"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}