{"id":2062,"date":"2012-02-02T10:25:41","date_gmt":"2012-02-02T15:25:41","guid":{"rendered":"http:\/\/jdhitsolutions.com\/blog\/?p=2062"},"modified":"2012-02-02T10:25:41","modified_gmt":"2012-02-02T15:25:41","slug":"export-and-import-hash-tables","status":"publish","type":"post","link":"https:\/\/jdhitsolutions.com\/blog\/powershell\/2062\/export-and-import-hash-tables\/","title":{"rendered":"Export and Import Hash Tables"},"content":{"rendered":"<p>I use hash tables quite a bit and with the impending arrival of PowerShell 3.0 I expect even more so. PowerShell v3 allows you to define a hash table of default parameter values. I'm not going to to cover that feature specifically, but it made me realize I needed a better way to export a hash table, say to a CSV file. So I put together a few functions to do just that.<\/p>\n<p>To walk you through them, here's a simple hash table.<\/p>\n<p><code lang=\"PowerShell\"><br \/>\n$hash=@{Name=\"jeff\";pi=3.14;date=Get-Date;size=3 }<br \/>\n$hash<br \/>\nName                           Value<br \/>\n----                           -----<br \/>\nName                           jeff<br \/>\npi                             3.14<br \/>\ndate                           2\/2\/2012 10:04:54 AM<br \/>\nsize                           3<br \/>\n<\/code><\/p>\n<p>I want to export this to a CSV file, but because PowerShell is all about the objects, I want to be sure to get the type information as well. Otherwise when I go to importing, everything will be a string.  Here's what I can expect to export:<\/p>\n<p><code lang=\"powershell\"><br \/>\n$hash.GetEnumerator() |  Select Key,Value,@{Name=\"Type\";Expression={$_.value.gettype().name}}<\/p>\n<p>Key                        Value                      Type<br \/>\n---                        -----                      ----<br \/>\nName                       jeff                       String<br \/>\npi                         3.14                       Double<br \/>\ndate                       2\/2\/2012 10:05:57 AM       DateTime<br \/>\nsize                       3                          Int32<br \/>\n<\/code><\/p>\n<p>That looks good. I can take this command and run it through Export-CSV which gives me this file:<\/p>\n<p><code lang=\"dos\"><\/p>\n<p>#TYPE Selected.System.Collections.DictionaryEntry<br \/>\n\"Key\",\"Value\",\"Type\"<br \/>\n\"Name\",\"jeff\",\"String\"<br \/>\n\"pi\",\"3.14\",\"Double\"<br \/>\n\"date\",\"2\/2\/2012 10:05:57 AM\",\"DateTime\"<br \/>\n\"size\",\"3\",\"Int32\"<br \/>\n<\/code><\/p>\n<p>Perfect. Later, I will need to import this file and recreate my hash table.  I can use Import-CSV as a starting point.<\/p>\n<p><code lang=\"DOS\"><br \/>\nPS C:\\> import-csv hash.csv<\/p>\n<p>Key                        Value                      Type<br \/>\n---                        -----                      ----<br \/>\nName                       jeff                       String<br \/>\npi                         3.14                       Double<br \/>\ndate                       2\/2\/2012 10:05:57 AM       DateTime<br \/>\nsize                       3                          Int32<br \/>\n<\/code><\/p>\n<p>Good so far. All I need to do is create a hash table and add each entry to it. I could do something like this:<\/p>\n<p><code lang=\"PowerShell\"><br \/>\nImport-csv hash.csv | foreach -begin {$hash=@{}} -process {$hash.Add($_.Key,$_.Value)} -end {$hash}<br \/>\n<\/code><\/p>\n<p>But if I do this, everything will be a string. Since I have Type information, let's use it.<\/p>\n<p><code lang=\"PowerShell\"><br \/>\nImport-Csv -Path $path | ForEach-Object -begin {<br \/>\n     #define an empty hash table<br \/>\n     $hash=@{}<br \/>\n    } -process {<br \/>\n       <#\n       if there is a type column, then add the entry as that type\n       otherwise we'll treat it as a string\n       #><br \/>\n       if ($_.Type) {<\/p>\n<p>         $type=[type]\"$($_.type)\"<br \/>\n       }<br \/>\n       else {<br \/>\n         $type=[type]\"string\"<br \/>\n       }<br \/>\n       Write-Verbose \"Adding $($_.key)\"<br \/>\n       Write-Verbose \"Setting type to $type\"<\/p>\n<p>       $hash.Add($_.Key,($($_.Value) -as $type))<\/p>\n<p>    } -end {<br \/>\n      #write hash to the pipeline<br \/>\n      Write-Output $hash<br \/>\n    }<br \/>\n<\/code><\/p>\n<p>Here I'm taking the Type value from the import and turning it into a System.Type object which I can then use to cast each value to the correct type. I'm checking for the Type property because I might have a CSV file without it. But as long as I have column headings for Key and Value this will work.<\/p>\n<p>I turned all of this into a pair of advanced functions, Export-HashtoCSV and Import-CSVtoHash.<\/p>\n<p><code lang=\"DOS\"><br \/>\nPS C:\\> $hash | Export-HashtoCSV myhash.csv<br \/>\nPS C:\\> $newhash=Import-CSVtoHash .\\myhash.csv -verbose<br \/>\nVERBOSE: Importing data from .\\myhash.csv<br \/>\nVERBOSE: Adding Name<br \/>\nVERBOSE: Setting type to string<br \/>\nVERBOSE: Adding pi<br \/>\nVERBOSE: Setting type to double<br \/>\nVERBOSE: Adding date<br \/>\nVERBOSE: Setting type to System.DateTime<br \/>\nVERBOSE: Adding size<br \/>\nVERBOSE: Setting type to int<br \/>\nVERBOSE: Import complete<br \/>\nPS C:\\> $newhash<\/p>\n<p>Name                           Value<br \/>\n----                           -----<br \/>\nName                           jeff<br \/>\npi                             3.14<br \/>\ndate                           2\/2\/2012 10:05:57 AM<br \/>\nsize                           3<br \/>\nPS C:\\> $newhash.date<\/p>\n<p>Thursday, February 02, 2012 10:05:57 AM<br \/>\nPS C:\\> $newhash.pi.gettype().name<br \/>\nDouble<br \/>\n<\/code><\/p>\n<p>This certainly fulfills my needs. You can <a href='http:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2012\/02\/HashCSVFunctions.txt' target='_blank'>download a script file<\/a> with both functions, including help. As always, enjoy and I hope you'll let me know how these work out for you.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I use hash tables quite a bit and with the impending arrival of PowerShell 3.0 I expect even more so. PowerShell v3 allows you to define a hash table of default parameter values. I&#8217;m not going to to cover that feature specifically, but it made me realize I needed a better way to export a&#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":[4,75,8],"tags":[362,204,224,199,246,534,540],"class_list":["post-2062","post","type-post","status-publish","format-standard","hentry","category-powershell","category-powershell-v2-0","category-scripting","tag-csv","tag-export","tag-function","tag-hashtable","tag-import","tag-powershell","tag-scripting"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Export and Import Hash Tables &#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\/2062\/export-and-import-hash-tables\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Export and Import Hash Tables &#8226; The Lonely Administrator\" \/>\n<meta property=\"og:description\" content=\"I use hash tables quite a bit and with the impending arrival of PowerShell 3.0 I expect even more so. PowerShell v3 allows you to define a hash table of default parameter values. I&#039;m not going to to cover that feature specifically, but it made me realize I needed a better way to export a...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jdhitsolutions.com\/blog\/powershell\/2062\/export-and-import-hash-tables\/\" \/>\n<meta property=\"og:site_name\" content=\"The Lonely Administrator\" \/>\n<meta property=\"article:published_time\" content=\"2012-02-02T15:25:41+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=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell\\\/2062\\\/export-and-import-hash-tables\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell\\\/2062\\\/export-and-import-hash-tables\\\/\"},\"author\":{\"name\":\"Jeffery Hicks\",\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/#\\\/schema\\\/person\\\/d0258030b41f07fd745f4078bdf5b6c9\"},\"headline\":\"Export and Import Hash Tables\",\"datePublished\":\"2012-02-02T15:25:41+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell\\\/2062\\\/export-and-import-hash-tables\\\/\"},\"wordCount\":330,\"commentCount\":13,\"publisher\":{\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/#\\\/schema\\\/person\\\/d0258030b41f07fd745f4078bdf5b6c9\"},\"keywords\":[\"CSV\",\"export\",\"Function\",\"hashtable\",\"import\",\"PowerShell\",\"Scripting\"],\"articleSection\":[\"PowerShell\",\"PowerShell v2.0\",\"Scripting\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell\\\/2062\\\/export-and-import-hash-tables\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell\\\/2062\\\/export-and-import-hash-tables\\\/\",\"url\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell\\\/2062\\\/export-and-import-hash-tables\\\/\",\"name\":\"Export and Import Hash Tables &#8226; The Lonely Administrator\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/#website\"},\"datePublished\":\"2012-02-02T15:25:41+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell\\\/2062\\\/export-and-import-hash-tables\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell\\\/2062\\\/export-and-import-hash-tables\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell\\\/2062\\\/export-and-import-hash-tables\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"PowerShell\",\"item\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/category\\\/powershell\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Export and Import Hash Tables\"}]},{\"@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":"Export and Import Hash Tables &#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\/2062\/export-and-import-hash-tables\/","og_locale":"en_US","og_type":"article","og_title":"Export and Import Hash Tables &#8226; The Lonely Administrator","og_description":"I use hash tables quite a bit and with the impending arrival of PowerShell 3.0 I expect even more so. PowerShell v3 allows you to define a hash table of default parameter values. I'm not going to to cover that feature specifically, but it made me realize I needed a better way to export a...","og_url":"https:\/\/jdhitsolutions.com\/blog\/powershell\/2062\/export-and-import-hash-tables\/","og_site_name":"The Lonely Administrator","article_published_time":"2012-02-02T15:25:41+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":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jdhitsolutions.com\/blog\/powershell\/2062\/export-and-import-hash-tables\/#article","isPartOf":{"@id":"https:\/\/jdhitsolutions.com\/blog\/powershell\/2062\/export-and-import-hash-tables\/"},"author":{"name":"Jeffery Hicks","@id":"https:\/\/jdhitsolutions.com\/blog\/#\/schema\/person\/d0258030b41f07fd745f4078bdf5b6c9"},"headline":"Export and Import Hash Tables","datePublished":"2012-02-02T15:25:41+00:00","mainEntityOfPage":{"@id":"https:\/\/jdhitsolutions.com\/blog\/powershell\/2062\/export-and-import-hash-tables\/"},"wordCount":330,"commentCount":13,"publisher":{"@id":"https:\/\/jdhitsolutions.com\/blog\/#\/schema\/person\/d0258030b41f07fd745f4078bdf5b6c9"},"keywords":["CSV","export","Function","hashtable","import","PowerShell","Scripting"],"articleSection":["PowerShell","PowerShell v2.0","Scripting"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/jdhitsolutions.com\/blog\/powershell\/2062\/export-and-import-hash-tables\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/jdhitsolutions.com\/blog\/powershell\/2062\/export-and-import-hash-tables\/","url":"https:\/\/jdhitsolutions.com\/blog\/powershell\/2062\/export-and-import-hash-tables\/","name":"Export and Import Hash Tables &#8226; The Lonely Administrator","isPartOf":{"@id":"https:\/\/jdhitsolutions.com\/blog\/#website"},"datePublished":"2012-02-02T15:25:41+00:00","breadcrumb":{"@id":"https:\/\/jdhitsolutions.com\/blog\/powershell\/2062\/export-and-import-hash-tables\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jdhitsolutions.com\/blog\/powershell\/2062\/export-and-import-hash-tables\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jdhitsolutions.com\/blog\/powershell\/2062\/export-and-import-hash-tables\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"PowerShell","item":"https:\/\/jdhitsolutions.com\/blog\/category\/powershell\/"},{"@type":"ListItem","position":2,"name":"Export and Import Hash Tables"}]},{"@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":4039,"url":"https:\/\/jdhitsolutions.com\/blog\/powershell\/4039\/sorting-hash-tables\/","url_meta":{"origin":2062,"position":0},"title":"Sorting Hash Tables","author":"Jeffery Hicks","date":"September 22, 2014","format":false,"excerpt":"Over the weekend I received a nice comment from a reader who came across an old post of mine on turning an object into a hash table.\u00a0 He wanted to add a comment but my blog closes comments after a period of time. But I thought it was worth sharing,\u2026","rel":"","context":"In &quot;PowerShell&quot;","block_context":{"text":"PowerShell","link":"https:\/\/jdhitsolutions.com\/blog\/category\/powershell\/"},"img":{"alt_text":"letterjumble","src":"https:\/\/i0.wp.com\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2013\/03\/letterjumble-150x150.png?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":2009,"url":"https:\/\/jdhitsolutions.com\/blog\/scripting\/2009\/using-types-with-imported-csv-data-in-powershell\/","url_meta":{"origin":2062,"position":1},"title":"Using Types with Imported CSV Data in PowerShell","author":"Jeffery Hicks","date":"January 19, 2012","format":false,"excerpt":"The Import-CSV cmdlet in PowerShell is incredibly useful. You can take any CSV file and pump objects to the pipeline. The cmdlet uses the CSV header as properties for the custom object. PS S:\\> import-csv .\\testdata.csv Date : 1\/18\/2012 6:45:30 AM Name : Data_1 Service : ALG Key : 1\u2026","rel":"","context":"In &quot;PowerShell v2.0&quot;","block_context":{"text":"PowerShell v2.0","link":"https:\/\/jdhitsolutions.com\/blog\/category\/powershell-v2-0\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1301,"url":"https:\/\/jdhitsolutions.com\/blog\/scripting\/1301\/get-file-hash\/","url_meta":{"origin":2062,"position":2},"title":"Get File Hash","author":"Jeffery Hicks","date":"March 31, 2011","format":false,"excerpt":"The other day I had the need to calculate MD5 file hashes in order to compare files. The PowerShell Community Extensions has a nifty cmdlet, Get-Hash, that does exactly that. Unfortunately, sometimes even free tools like this aren't an option, as in the case of my client. Or they don't\u2026","rel":"","context":"In &quot;PowerShell v2.0&quot;","block_context":{"text":"PowerShell v2.0","link":"https:\/\/jdhitsolutions.com\/blog\/category\/powershell-v2-0\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1716,"url":"https:\/\/jdhitsolutions.com\/blog\/powershell\/1716\/convert-text-to-object\/","url_meta":{"origin":2062,"position":3},"title":"Convert Text to Object","author":"Jeffery Hicks","date":"October 25, 2011","format":false,"excerpt":"Today I have another tool in my new battle regarding turning command line tools into PowerShell tools. The bottom line is we want to have objects written to the pipeline. At the PowerShell Deep Dive in Frankfurt there was a suggestion about providing tools to help with the transformation from\u2026","rel":"","context":"In &quot;CommandLine&quot;","block_context":{"text":"CommandLine","link":"https:\/\/jdhitsolutions.com\/blog\/category\/commandline\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":4609,"url":"https:\/\/jdhitsolutions.com\/blog\/powershell\/4609\/historically-speaking\/","url_meta":{"origin":2062,"position":4},"title":"Historically Speaking","author":"Jeffery Hicks","date":"November 24, 2015","format":false,"excerpt":"So I've recently had a need to begin using Slack. I started out using a web browser, but since there is a Windows client I decided to give it a go. This article isn't about Slack as much as what I was curious about and how I decided to tackle\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":2613,"url":"https:\/\/jdhitsolutions.com\/blog\/powershell\/2613\/create-powershell-scripts-with-a-single-command\/","url_meta":{"origin":2062,"position":5},"title":"Create PowerShell Scripts with a Single Command","author":"Jeffery Hicks","date":"December 5, 2012","format":false,"excerpt":"One of the drawbacks to using a PowerShell script or function is that you have to write it. For many IT Pros, especially those new to PowerShell, it can be difficult to know where to start. I think more people would write their own tools if there was an easy\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\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2011\/10\/talkbubble-150x150.png?resize=350%2C200","width":350,"height":200},"classes":[]}],"_links":{"self":[{"href":"https:\/\/jdhitsolutions.com\/blog\/wp-json\/wp\/v2\/posts\/2062","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=2062"}],"version-history":[{"count":0,"href":"https:\/\/jdhitsolutions.com\/blog\/wp-json\/wp\/v2\/posts\/2062\/revisions"}],"wp:attachment":[{"href":"https:\/\/jdhitsolutions.com\/blog\/wp-json\/wp\/v2\/media?parent=2062"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jdhitsolutions.com\/blog\/wp-json\/wp\/v2\/categories?post=2062"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jdhitsolutions.com\/blog\/wp-json\/wp\/v2\/tags?post=2062"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}