{"id":8731,"date":"2021-12-16T11:17:19","date_gmt":"2021-12-16T16:17:19","guid":{"rendered":"https:\/\/jdhitsolutions.com\/blog\/?p=8731"},"modified":"2021-12-16T11:17:24","modified_gmt":"2021-12-16T16:17:24","slug":"fun-with-powershell-module-layout","status":"publish","type":"post","link":"https:\/\/jdhitsolutions.com\/blog\/powershell\/8731\/fun-with-powershell-module-layout\/","title":{"rendered":"Fun with PowerShell Module Layout"},"content":{"rendered":"\n<p>As I've been working on my new PowerShell project, which I've discussed over recent posts, I keep \"discovering\"  fun scripting opportunities. Today I want to share some code I've come up with that makes it easier to build a PowerShell module directory structure. There are plenty of existing tools and scripts for scaffolding a project or directory structure.  Projects like <a href=\"https:\/\/github.com\/PowerShellOrg\/Plaster\" target=\"_blank\" rel=\"noreferrer noopener\">Plaster <\/a>for example. I am by no means recommending my functions over these tools. But maybe they might fill a niche, spark an idea for your own work, or teach you something new about PowerShell.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Model Module<\/h2>\n\n\n\n<p>I begin by creating a sample module directory folder. This is the folder layout that I am tending to use these days when writing a new PowerShell module. I'll also create a few simple text files like readme, changelog, and license files There's no need to create the module psm1 file or the manifest. That is a separate and specific task. What I'm defining now is a generic model. <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2021\/12\/sample-module-layout.png\"><img loading=\"lazy\" decoding=\"async\" width=\"702\" height=\"873\" src=\"https:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2021\/12\/sample-module-layout.png\" alt=\"sample module directory structure\" class=\"wp-image-8732\" srcset=\"https:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2021\/12\/sample-module-layout.png 702w, https:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2021\/12\/sample-module-layout-241x300.png 241w, https:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2021\/12\/sample-module-layout-300x373.png 300w\" sizes=\"auto, (max-width: 702px) 100vw, 702px\" \/><\/a><\/figure>\n\n\n\n<p>By the way, <a href=\"https:\/\/github.com\/PowerShellOrg\/Plaster\" target=\"_blank\" rel=\"noreferrer noopener\">Show-Tree<\/a> is from the <a href=\"https:\/\/github.com\/jdhitsolutions\/PSScriptTools\" target=\"_blank\" rel=\"noreferrer noopener\">PSScriptTools<\/a> module.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Exporting<\/h2>\n\n\n\n<p>The export process is relatively simple. I need to recurse through the folder listing directories and files. Because I might have nested directories, I need to capture the relative path.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2021\/12\/get-relativepath.png\"><img loading=\"lazy\" decoding=\"async\" width=\"888\" height=\"604\" src=\"https:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2021\/12\/get-relativepath.png\" alt=\"getting file and directory relative paths\" class=\"wp-image-8733\" srcset=\"https:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2021\/12\/get-relativepath.png 888w, https:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2021\/12\/get-relativepath-300x204.png 300w, https:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2021\/12\/get-relativepath-768x522.png 768w, https:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2021\/12\/get-relativepath-850x578.png 850w\" sizes=\"auto, (max-width: 888px) 100vw, 888px\" \/><\/a><\/figure>\n\n\n\n<p>In order to simplify the relative path, I need to set my location to the root directory. Because I know I will eventually be recreating this structure, I need to be able to distinguish between directories and files. I also need to capture the file contents.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"powershell\" class=\"language-powershell\">Get-ChildItem -Recurse |\nForEach-Object {\n    $relPath = (Resolve-Path -Path $_.fullname -Relative) -replace \"\\.\\\\\", \"\"\n    Write-Verbose \"Processing $relPath\"\n    if ($_.Gettype().name -eq 'FileInfo') {\n        $f = [pscustomobject]@{\n            ItemType = \"file\"\n            Path     = $relPath\n            Content  = (Get-Content -Path $_.fullname)\n        }\n        $out.add($f)\n    }\n    else {\n        $d = [pscustomobject]@{\n            ItemType = \"directory\"\n            Path     = $relPath\n        }\n        $out.Add($d)\n    }\n} #foreach-object<\/code><\/pre>\n\n\n\n<p>In my code, I'm stripping off the leading .\\ to the relative path. I then create a custom object for each item type. Each object is added to the $out list.  The list is then converted to json and saved to a file.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"powershell\" class=\"language-powershell\">$out | ConvertTo-Json | Out-File -FilePath $FilePath<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2021\/12\/export-modulelayout.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"748\" src=\"https:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2021\/12\/export-modulelayout-1024x748.png\" alt=\"export module layout to json\" class=\"wp-image-8734\" srcset=\"https:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2021\/12\/export-modulelayout-1024x748.png 1024w, https:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2021\/12\/export-modulelayout-300x219.png 300w, https:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2021\/12\/export-modulelayout-768x561.png 768w, https:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2021\/12\/export-modulelayout-850x621.png 850w, https:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2021\/12\/export-modulelayout.png 1263w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p>The command created this json content.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"json\" class=\"language-json\">[\n    {\n        \"Created\":  \"12\/16\/2021 10:44 AM\",\n        \"CreatedBy\":  \"Jeff\",\n        \"Computername\":  \"THINKP1\",\n        \"Source\":  \"C:\\\\work\\\\sample\",\n        \"Version\":  \"1.0\"\n    },\n    {\n        \"ItemType\":  \"directory\",\n        \"Path\":  \".github\"\n    },\n    {\n        \"ItemType\":  \"directory\",\n        \"Path\":  \".vscode\"\n    },\n    {\n        \"ItemType\":  \"directory\",\n        \"Path\":  \"docs\"\n    },\n    {\n        \"ItemType\":  \"directory\",\n        \"Path\":  \"en-us\"\n    },\n    {\n        \"ItemType\":  \"directory\",\n        \"Path\":  \"formats\"\n    },\n    {\n        \"ItemType\":  \"directory\",\n        \"Path\":  \"functions\"\n    },\n    {\n        \"ItemType\":  \"directory\",\n        \"Path\":  \"icons\"\n    },\n    {\n        \"ItemType\":  \"directory\",\n        \"Path\":  \"images\"\n    },\n    {\n        \"ItemType\":  \"directory\",\n        \"Path\":  \"samples\"\n    },\n    {\n        \"ItemType\":  \"directory\",\n        \"Path\":  \"tests\"\n    },\n    {\n        \"ItemType\":  \"directory\",\n        \"Path\":  \"types\"\n    },\n    {\n        \"ItemType\":  \"file\",\n        \"Path\":  \"changelog.md\",\n        \"Content\":  {\n                        \"value\":  \"# Changelog\",\n                        \"PSPath\":  \"C:\\\\work\\\\sample\\\\changelog.md\",\n                        \"PSParentPath\":  \"C:\\\\work\\\\sample\",\n                        \"PSChildName\":  \"changelog.md\",\n                        \"PSDrive\":  \"C\",\n                        \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                        \"ReadCount\":  1\n                    }\n    },\n    {\n        \"ItemType\":  \"file\",\n        \"Path\":  \"License.txt\",\n        \"Content\":  [\n                        {\n                            \"value\":  \"MIT License\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\License.txt\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\",\n                            \"PSChildName\":  \"License.txt\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  1\n                        },\n                        {\n                            \"value\":  \"\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\License.txt\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\",\n                            \"PSChildName\":  \"License.txt\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  2\n                        },\n                        {\n                            \"value\":  \"Copyright (c) 2021 JDH Information Technology Solutions, Inc.\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\License.txt\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\",\n                            \"PSChildName\":  \"License.txt\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  3\n                        },\n                        {\n                            \"value\":  \"\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\License.txt\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\",\n                            \"PSChildName\":  \"License.txt\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  4\n                        },\n                        {\n                            \"value\":  \"\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\License.txt\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\",\n                            \"PSChildName\":  \"License.txt\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  5\n                        },\n                        {\n                            \"value\":  \"Permission is hereby granted, free of charge, to any person obtaining a copy\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\License.txt\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\",\n                            \"PSChildName\":  \"License.txt\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  6\n                        },\n                        {\n                            \"value\":  \"of this software and associated documentation files (the \\\"Software\\\"), to deal\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\License.txt\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\",\n                            \"PSChildName\":  \"License.txt\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  7\n                        },\n                        {\n                            \"value\":  \"in the Software without restriction, including without limitation the rights\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\License.txt\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\",\n                            \"PSChildName\":  \"License.txt\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  8\n                        },\n                        {\n                            \"value\":  \"to use, copy, modify, merge, publish, distribute, sublicense, and\/or sell\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\License.txt\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\",\n                            \"PSChildName\":  \"License.txt\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  9\n                        },\n                        {\n                            \"value\":  \"copies of the Software, and to permit persons to whom the Software is\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\License.txt\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\",\n                            \"PSChildName\":  \"License.txt\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  10\n                        },\n                        {\n                            \"value\":  \"furnished to do so, subject to the following conditions:\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\License.txt\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\",\n                            \"PSChildName\":  \"License.txt\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  11\n                        },\n                        {\n                            \"value\":  \"\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\License.txt\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\",\n                            \"PSChildName\":  \"License.txt\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  12\n                        },\n                        {\n                            \"value\":  \"\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\License.txt\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\",\n                            \"PSChildName\":  \"License.txt\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  13\n                        },\n                        {\n                            \"value\":  \"The above copyright notice and this permission notice shall be included in\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\License.txt\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\",\n                            \"PSChildName\":  \"License.txt\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  14\n                        },\n                        {\n                            \"value\":  \"all copies or substantial portions of the Software.\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\License.txt\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\",\n                            \"PSChildName\":  \"License.txt\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  15\n                        },\n                        {\n                            \"value\":  \"\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\License.txt\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\",\n                            \"PSChildName\":  \"License.txt\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  16\n                        },\n                        {\n                            \"value\":  \"\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\License.txt\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\",\n                            \"PSChildName\":  \"License.txt\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  17\n                        },\n                        {\n                            \"value\":  \"THE SOFTWARE IS PROVIDED \\\"AS IS\\\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\License.txt\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\",\n                            \"PSChildName\":  \"License.txt\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  18\n                        },\n                        {\n                            \"value\":  \"IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\License.txt\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\",\n                            \"PSChildName\":  \"License.txt\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  19\n                        },\n                        {\n                            \"value\":  \"FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\License.txt\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\",\n                            \"PSChildName\":  \"License.txt\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  20\n                        },\n                        {\n                            \"value\":  \"AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\License.txt\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\",\n                            \"PSChildName\":  \"License.txt\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  21\n                        },\n                        {\n                            \"value\":  \"LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\License.txt\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\",\n                            \"PSChildName\":  \"License.txt\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  22\n                        },\n                        {\n                            \"value\":  \"OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\License.txt\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\",\n                            \"PSChildName\":  \"License.txt\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  23\n                        },\n                        {\n                            \"value\":  \"THE SOFTWARE.\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\License.txt\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\",\n                            \"PSChildName\":  \"License.txt\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  24\n                        }\n                    ]\n    },\n    {\n        \"ItemType\":  \"file\",\n        \"Path\":  \"README.md\",\n        \"Content\":  {\n                        \"value\":  \"# README\",\n                        \"PSPath\":  \"C:\\\\work\\\\sample\\\\README.md\",\n                        \"PSParentPath\":  \"C:\\\\work\\\\sample\",\n                        \"PSChildName\":  \"README.md\",\n                        \"PSDrive\":  \"C\",\n                        \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                        \"ReadCount\":  1\n                    }\n    },\n    {\n        \"ItemType\":  \"file\",\n        \"Path\":  \"scratch-changelog.md\",\n        \"Content\":  {\n                        \"value\":  \"# scratch change\",\n                        \"PSPath\":  \"C:\\\\work\\\\sample\\\\scratch-changelog.md\",\n                        \"PSParentPath\":  \"C:\\\\work\\\\sample\",\n                        \"PSChildName\":  \"scratch-changelog.md\",\n                        \"PSDrive\":  \"C\",\n                        \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                        \"ReadCount\":  1\n                    }\n    },\n    {\n        \"ItemType\":  \"file\",\n        \"Path\":  \".vscode\\\\tasks.json\",\n        \"Content\":  [\n                        {\n                            \"value\":  \"{\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  1\n                        },\n                        {\n                            \"value\":  \"    \/\/ See https:\/\/go.microsoft.com\/fwlink\/?LinkId=733558\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  2\n                        },\n                        {\n                            \"value\":  \"    \/\/ for the documentation about the tasks.json format\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  3\n                        },\n                        {\n                            \"value\":  \"    \\\"version\\\": \\\"2.0.0\\\",\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  4\n                        },\n                        {\n                            \"value\":  \"    \\\"tasks\\\": [\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  5\n                        },\n                        {\n                            \"value\":  \"        {\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  6\n                        },\n                        {\n                            \"value\":  \"            \\\"label\\\": \\\"Pester Test\\\",\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  7\n                        },\n                        {\n                            \"value\":  \"            \\\"type\\\": \\\"shell\\\",\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  8\n                        },\n                        {\n                            \"value\":  \"            \\\"command\\\": \\\"Get-Module Pester | Remove-Module;import-module -FullyQualifiedName @{ModuleName=\\u0027Pester\\u0027;RequiredVersion=\\u00274.10.1\\u0027};Invoke-Pester -Script .\\\\\\\\tests\\\\\\\\*test*.ps1 -PesterOption @{IncludeVSCodeMarker=$true}\\\",\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  9\n                        },\n                        {\n                            \"value\":  \"            \\\"options\\\": {\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  10\n                        },\n                        {\n                            \"value\":  \"                \\\"shell\\\": {\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  11\n                        },\n                        {\n                            \"value\":  \"                    \\\"executable\\\": \\\"powershell.exe\\\",\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  12\n                        },\n                        {\n                            \"value\":  \"                    \\\"args\\\": [\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  13\n                        },\n                        {\n                            \"value\":  \"                        \\\"-noprofile\\\"\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  14\n                        },\n                        {\n                            \"value\":  \"                    ]\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  15\n                        },\n                        {\n                            \"value\":  \"                }\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  16\n                        },\n                        {\n                            \"value\":  \"            }\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  17\n                        },\n                        {\n                            \"value\":  \"        },\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  18\n                        },\n                        {\n                            \"value\":  \"        {\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  19\n                        },\n                        {\n                            \"value\":  \"            \\\"label\\\": \\\"Build markdown help files\\\",\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  20\n                        },\n                        {\n                            \"value\":  \"            \\\"type\\\": \\\"shell\\\",\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  21\n                        },\n                        {\n                            \"value\":  \"            \\\"command\\\": \\\"Import-Module $pwd\\\\\\\\*.psd1 -force;$module = Split-Path $pwd -leaf;New-MarkdownHelp -module $module -output $pwd\\\\\\\\docs -force\\\",\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  22\n                        },\n                        {\n                            \"value\":  \"            \\\"options\\\": {\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  23\n                        },\n                        {\n                            \"value\":  \"                \\\"shell\\\": {\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  24\n                        },\n                        {\n                            \"value\":  \"                    \\\"executable\\\": \\\"powershell.exe\\\",\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  25\n                        },\n                        {\n                            \"value\":  \"                    \\\"args\\\": [\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  26\n                        },\n                        {\n                            \"value\":  \"                        \\\"-noprofile\\\"\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  27\n                        },\n                        {\n                            \"value\":  \"                    ]\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  28\n                        },\n                        {\n                            \"value\":  \"                }\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  29\n                        },\n                        {\n                            \"value\":  \"            }\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  30\n                        },\n                        {\n                            \"value\":  \"        },\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  31\n                        },\n                        {\n                            \"value\":  \"        {\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  32\n                        },\n                        {\n                            \"value\":  \"            \\\"label\\\": \\\"Add markdown help file\\\",\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  33\n                        },\n                        {\n                            \"value\":  \"            \\\"type\\\": \\\"shell\\\",\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  34\n                        },\n                        {\n                            \"value\":  \"            \\\"command\\\": \\\"Import-Module $pwd\\\\\\\\*.psd1 -force;$module = Split-Path $pwd -leaf;$cmd = Read-Host \\u0027What command needs help?\\u0027;New-MarkdownHelp -command $cmd -output $pwd\\\\\\\\docs -force;code $pwd\\\\\\\\docs\\\\\\\\$cmd.md\\\",\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  35\n                        },\n                        {\n                            \"value\":  \"            \\\"options\\\": {\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  36\n                        },\n                        {\n                            \"value\":  \"                \\\"shell\\\": {\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  37\n                        },\n                        {\n                            \"value\":  \"                    \\\"executable\\\": \\\"powershell.exe\\\",\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  38\n                        },\n                        {\n                            \"value\":  \"                    \\\"args\\\": [\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  39\n                        },\n                        {\n                            \"value\":  \"                        \\\"-noprofile\\\"\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  40\n                        },\n                        {\n                            \"value\":  \"                    ]\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  41\n                        },\n                        {\n                            \"value\":  \"                }\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  42\n                        },\n                        {\n                            \"value\":  \"            }\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  43\n                        },\n                        {\n                            \"value\":  \"        },\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  44\n                        },\n                        {\n                            \"value\":  \"        {\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  45\n                        },\n                        {\n                            \"value\":  \"            \\\"label\\\": \\\"Update markdown help file\\\",\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  46\n                        },\n                        {\n                            \"value\":  \"            \\\"type\\\": \\\"shell\\\",\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  47\n                        },\n                        {\n                            \"value\":  \"            \\\"command\\\": \\\"Import-Module $pwd\\\\\\\\*.psd1 -force;$module = Split-Path $pwd -leaf;$cmd = Read-Host \\u0027What command needs UPDATED help?\\u0027;Update-MarkdownHelp -path $pwd\\\\\\\\docs\\\\\\\\$cmd.md -force;code $pwd\\\\\\\\docs\\\\\\\\$cmd.md\\\",\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  48\n                        },\n                        {\n                            \"value\":  \"            \\\"options\\\": {\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  49\n                        },\n                        {\n                            \"value\":  \"                \\\"shell\\\": {\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  50\n                        },\n                        {\n                            \"value\":  \"                    \\\"executable\\\": \\\"powershell.exe\\\",\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  51\n                        },\n                        {\n                            \"value\":  \"                    \\\"args\\\": [\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  52\n                        },\n                        {\n                            \"value\":  \"                        \\\"-noprofile\\\"\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  53\n                        },\n                        {\n                            \"value\":  \"                    ]\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  54\n                        },\n                        {\n                            \"value\":  \"                }\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  55\n                        },\n                        {\n                            \"value\":  \"            }\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  56\n                        },\n                        {\n                            \"value\":  \"        },\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  57\n                        },\n                        {\n                            \"value\":  \"        {\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  58\n                        },\n                        {\n                            \"value\":  \"            \\\"label\\\": \\\"Build PowerShell module external help\\\",\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  59\n                        },\n                        {\n                            \"value\":  \"            \\\"type\\\": \\\"shell\\\",\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  60\n                        },\n                        {\n                            \"value\":  \"            \\\"command\\\": \\\"c:\\\\\\\\scripts\\\\\\\\build-externalhelp.ps1\\\",\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  61\n                        },\n                        {\n                            \"value\":  \"            \\\"options\\\": {\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  62\n                        },\n                        {\n                            \"value\":  \"                \\\"shell\\\": {\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  63\n                        },\n                        {\n                            \"value\":  \"                    \\\"executable\\\": \\\"powershell.exe\\\",\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  64\n                        },\n                        {\n                            \"value\":  \"                    \\\"args\\\": [\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  65\n                        },\n                        {\n                            \"value\":  \"                        \\\"-noprofile\\\"\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  66\n                        },\n                        {\n                            \"value\":  \"                    ]\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  67\n                        },\n                        {\n                            \"value\":  \"                }\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  68\n                        },\n                        {\n                            \"value\":  \"            }\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  69\n                        },\n                        {\n                            \"value\":  \"        },\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  70\n                        },\n                        {\n                            \"value\":  \"        {\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  71\n                        },\n                        {\n                            \"value\":  \"            \\\"label\\\": \\\"Push release to GitHub WHATIF\\\",\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  72\n                        },\n                        {\n                            \"value\":  \"            \\\"type\\\": \\\"shell\\\",\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  73\n                        },\n                        {\n                            \"value\":  \"            \\\"command\\\": \\\"c:\\\\\\\\scripts\\\\\\\\GitReleasePush.ps1 -whatif\\\",\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  74\n                        },\n                        {\n                            \"value\":  \"            \\\"options\\\": {\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  75\n                        },\n                        {\n                            \"value\":  \"                \\\"shell\\\": {\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  76\n                        },\n                        {\n                            \"value\":  \"                    \\\"executable\\\": \\\"powershell.exe\\\",\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  77\n                        },\n                        {\n                            \"value\":  \"                    \\\"args\\\": [\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  78\n                        },\n                        {\n                            \"value\":  \"                        \\\"-noprofile\\\"\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  79\n                        },\n                        {\n                            \"value\":  \"                    ]\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  80\n                        },\n                        {\n                            \"value\":  \"                }\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  81\n                        },\n                        {\n                            \"value\":  \"            }\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  82\n                        },\n                        {\n                            \"value\":  \"        },\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  83\n                        },\n                        {\n                            \"value\":  \"        {\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  84\n                        },\n                        {\n                            \"value\":  \"            \\\"label\\\": \\\"Push PREVIEW release to GitHub\\\",\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  85\n                        },\n                        {\n                            \"value\":  \"            \\\"type\\\": \\\"shell\\\",\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  86\n                        },\n                        {\n                            \"value\":  \"            \\\"command\\\": \\\"c:\\\\\\\\scripts\\\\\\\\GitReleasePush.ps1 -PREVIEW\\\",\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  87\n                        },\n                        {\n                            \"value\":  \"            \\\"options\\\": {\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  88\n                        },\n                        {\n                            \"value\":  \"                \\\"shell\\\": {\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  89\n                        },\n                        {\n                            \"value\":  \"                    \\\"executable\\\": \\\"powershell.exe\\\",\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  90\n                        },\n                        {\n                            \"value\":  \"                    \\\"args\\\": [\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  91\n                        },\n                        {\n                            \"value\":  \"                        \\\"-noprofile\\\"\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  92\n                        },\n                        {\n                            \"value\":  \"                    ]\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  93\n                        },\n                        {\n                            \"value\":  \"                }\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  94\n                        },\n                        {\n                            \"value\":  \"            }\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  95\n                        },\n                        {\n                            \"value\":  \"        },\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  96\n                        },\n                        {\n                            \"value\":  \"        {\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  97\n                        },\n                        {\n                            \"value\":  \"            \\\"label\\\": \\\"Push release to GitHub\\\",\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  98\n                        },\n                        {\n                            \"value\":  \"            \\\"type\\\": \\\"shell\\\",\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  99\n                        },\n                        {\n                            \"value\":  \"            \\\"command\\\": \\\"c:\\\\\\\\scripts\\\\\\\\GitReleasePush.ps1\\\",\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  100\n                        },\n                        {\n                            \"value\":  \"            \\\"options\\\": {\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  101\n                        },\n                        {\n                            \"value\":  \"                \\\"shell\\\": {\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  102\n                        },\n                        {\n                            \"value\":  \"                    \\\"executable\\\": \\\"powershell.exe\\\",\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  103\n                        },\n                        {\n                            \"value\":  \"                    \\\"args\\\": [\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  104\n                        },\n                        {\n                            \"value\":  \"                        \\\"-noprofile\\\"\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  105\n                        },\n                        {\n                            \"value\":  \"                    ]\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  106\n                        },\n                        {\n                            \"value\":  \"                }\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  107\n                        },\n                        {\n                            \"value\":  \"            }\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  108\n                        },\n                        {\n                            \"value\":  \"        }\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  109\n                        },\n                        {\n                            \"value\":  \"    ]\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  110\n                        },\n                        {\n                            \"value\":  \"}\",\n                            \"PSPath\":  \"C:\\\\work\\\\sample\\\\.vscode\\\\tasks.json\",\n                            \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\.vscode\",\n                            \"PSChildName\":  \"tasks.json\",\n                            \"PSDrive\":  \"C\",\n                            \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                            \"ReadCount\":  111\n                        }\n                    ]\n    },\n    {\n        \"ItemType\":  \"file\",\n        \"Path\":  \"formats\\\\readme.txt\",\n        \"Content\":  {\n                        \"value\":  \"These are formatting files for the module. This file can be deleted.\",\n                        \"PSPath\":  \"C:\\\\work\\\\sample\\\\formats\\\\readme.txt\",\n                        \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\formats\",\n                        \"PSChildName\":  \"readme.txt\",\n                        \"PSDrive\":  \"C\",\n                        \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                        \"ReadCount\":  1\n                    }\n    },\n    {\n        \"ItemType\":  \"directory\",\n        \"Path\":  \"functions\\\\private\"\n    },\n    {\n        \"ItemType\":  \"directory\",\n        \"Path\":  \"functions\\\\public\"\n    },\n    {\n        \"ItemType\":  \"file\",\n        \"Path\":  \"functions\\\\private\\\\readme.txt\",\n        \"Content\":  {\n                        \"value\":  \"This folder contains private module functions. This file can be deleted.\",\n                        \"PSPath\":  \"C:\\\\work\\\\sample\\\\functions\\\\private\\\\readme.txt\",\n                        \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\functions\\\\private\",\n                        \"PSChildName\":  \"readme.txt\",\n                        \"PSDrive\":  \"C\",\n                        \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                        \"ReadCount\":  1\n                    }\n    },\n    {\n        \"ItemType\":  \"file\",\n        \"Path\":  \"functions\\\\public\\\\readme.txt\",\n        \"Content\":  {\n                        \"value\":  \"This folder contains public module functions. This file can be deleted.\",\n                        \"PSPath\":  \"C:\\\\work\\\\sample\\\\functions\\\\public\\\\readme.txt\",\n                        \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\functions\\\\public\",\n                        \"PSChildName\":  \"readme.txt\",\n                        \"PSDrive\":  \"C\",\n                        \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                        \"ReadCount\":  1\n                    }\n    },\n    {\n        \"ItemType\":  \"file\",\n        \"Path\":  \"tests\\\\readme.txt\",\n        \"Content\":  {\n                        \"value\":  \"Module Pester tests for the module. This file can be deleted.\",\n                        \"PSPath\":  \"C:\\\\work\\\\sample\\\\tests\\\\readme.txt\",\n                        \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\tests\",\n                        \"PSChildName\":  \"readme.txt\",\n                        \"PSDrive\":  \"C\",\n                        \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                        \"ReadCount\":  1\n                    }\n    },\n    {\n        \"ItemType\":  \"file\",\n        \"Path\":  \"types\\\\readme.txt\",\n        \"Content\":  {\n                        \"value\":  \"These are custom type extension files for the module. This file can be deleted.\",\n                        \"PSPath\":  \"C:\\\\work\\\\sample\\\\types\\\\readme.txt\",\n                        \"PSParentPath\":  \"C:\\\\work\\\\sample\\\\types\",\n                        \"PSChildName\":  \"readme.txt\",\n                        \"PSDrive\":  \"C\",\n                        \"PSProvider\":  \"Microsoft.PowerShell.Core\\\\FileSystem\",\n                        \"ReadCount\":  1\n                    }\n    }\n]<\/code><\/pre>\n\n\n\n<p>I should point out that the function creates some metadata that you can use to manage your layout.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"powershell\" class=\"language-powershell\">$meta = [pscustomobject]@{\n    Created      = (Get-Date -Format g)\n    CreatedBy    = $env:USERNAME\n    Computername = $env:COMPUTERNAME\n    Source       = (Convert-Path $SourcePath)\n    Version      = $version\n}<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2021\/12\/layout-metadata.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"255\" src=\"https:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2021\/12\/layout-metadata-1024x255.png\" alt=\"getting layout metadata\" class=\"wp-image-8736\" srcset=\"https:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2021\/12\/layout-metadata-1024x255.png 1024w, https:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2021\/12\/layout-metadata-300x75.png 300w, https:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2021\/12\/layout-metadata-768x191.png 768w, https:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2021\/12\/layout-metadata-850x212.png 850w, https:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2021\/12\/layout-metadata.png 1288w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p>In Windows PowerShell, ConvertFrom-Json has an unexpected output format, so in a pipelined expression, piping to ForEach-Object works around it. I'll probably build a command to get information about the layout file to simplify this process.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Import a Module Layout<\/h2>\n\n\n\n<p>With this json file, I am ready to recreate it. All I need to do is specify the new location. This location will be a parent path that must already exist like C:\\Scripts and the name of the new module. I can import the json file, convert it, and recreate the folders and files.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"powershell\" class=\"language-powershell\">ForEach-Object {\n    #create all the directories first\n    if ($_.Itemtype -eq 'directory') {\n        if ($pscmdlet.ShouldProcess($_.path, \"Create directory\")) {\n            New-Item -Path $modpath -Name $_.path -ItemType Directory -Force\n        }\n    } #directory item\n    elseif ($_.itemtype -eq 'file') {\n        if ($pscmdlet.ShouldProcess($_.path, \"Create file\")) {\n            $newFile = (Join-Path -Path $modPath -ChildPath $_.path)\n            Set-Content -Path $newfile -Value $_.content\n            Get-Item -path $newFile\n        }\n    } #file item\n} #foreach-object\n<\/code><\/pre>\n\n\n\n<p>Even though commands like New-Item support -WhatIf, which my import function also supports, I'm writing my own Whatif code. This is because the Set-Content commands will throw exceptions if the path doesn't exist.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2021\/12\/import-modulelayout-whatif.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"562\" src=\"https:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2021\/12\/import-modulelayout-whatif-1024x562.png\" alt=\"import module layout whatif\" class=\"wp-image-8737\" srcset=\"https:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2021\/12\/import-modulelayout-whatif-1024x562.png 1024w, https:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2021\/12\/import-modulelayout-whatif-300x165.png 300w, https:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2021\/12\/import-modulelayout-whatif-768x422.png 768w, https:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2021\/12\/import-modulelayout-whatif-1536x844.png 1536w, https:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2021\/12\/import-modulelayout-whatif-850x467.png 850w, https:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2021\/12\/import-modulelayout-whatif.png 1586w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p>If I'm happy with this, I can run it for real.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2021\/12\/import-modulelayout.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"544\" src=\"https:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2021\/12\/import-modulelayout-1024x544.png\" alt=\"import module layout\" class=\"wp-image-8738\" srcset=\"https:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2021\/12\/import-modulelayout-1024x544.png 1024w, https:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2021\/12\/import-modulelayout-300x159.png 300w, https:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2021\/12\/import-modulelayout-768x408.png 768w, https:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2021\/12\/import-modulelayout-1536x816.png 1536w, https:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2021\/12\/import-modulelayout-850x452.png 850w, https:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2021\/12\/import-modulelayout.png 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p>Within seconds I have a complete module structure created and ready for a new project.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Functions<\/h2>\n\n\n\n<p>I will be including these functions in the new PSFunctionTools module I am writing. But you are welcome to try them out. Any feedback or suggestions would be welcome.<\/p>\n\n\n\n<pre title=\"Export-ModuleLayout.ps1\" class=\"wp-block-code\"><code lang=\"powershell\" class=\"language-powershell\">Function Export-ModuleLayout {\n    [cmdletbinding()]\n    [alias(\"eml\")]\n    [OutputType(\"None\",\"System.IO.FileInfo\")]\n\n    Param(\n        [Parameter(Position = 0, Mandatory, HelpMessage = \"Specify the model module path.\")]\n        [ValidateScript( { Test-Path $_ })]\n        [string]$SourcePath,\n        [Parameter(HelpMessage = \"Define a version number for this layout.\")]\n        [string]$Version = \"1.0\",\n        [Parameter(HelpMessage = \"Specify the name of the Json file to store the result.\")]\n        [ValidateNotNullOrEmpty()]\n        [ValidatePattern(\"\\.json$\")]\n        [string]$FilePath = \".\\modulelayout.json\",\n        [Parameter(HelpMessage = \"Show the file result.\")]\n        [switch]$Passthru\n    )\n    Write-Verbose \"Starting $($MyInvocation.MyCommand)\"\n\n    $out = [System.Collections.Generic.list[object]]::New()\n    $meta = [pscustomobject]@{\n        Created      = (Get-Date -Format g)\n        CreatedBy    = $env:USERNAME\n        Computername = $env:COMPUTERNAME\n        Source       = (Convert-Path $SourcePath)\n        Version      = $version\n    }\n    $out.Add($meta)\n    Push-Location\n    #change location to the folder so that the relative path structure can be used.\n    Set-Location -path $SourcePath\n    Write-Verbose \"Exporting directory structure from $Sourcepath\"\n\n    Get-ChildItem -Recurse |\n    ForEach-Object {\n        $relPath = (Resolve-Path -Path $_.fullname -Relative) -replace \"\\.\\\\\", \"\"\n        Write-Verbose \"Processing $relPath\"\n        if ($_.Gettype().name -eq 'FileInfo') {\n            $f = [pscustomobject]@{\n                ItemType = \"file\"\n                Path     = $relPath\n                Content  = (Get-Content -Path $_.fullname)\n            }\n            $out.add($f)\n        }\n        else {\n            $d = [pscustomobject]@{\n                ItemType = \"directory\"\n                Path     = $relPath\n            }\n            $out.Add($d)\n        }\n    } #foreach-object\n\n    Write-Verbose \"Exporting module layout to $FilePath\"\n    $out | ConvertTo-Json | Out-File -FilePath $FilePath\n    Pop-Location\n    if ($Passthru) {\n        Get-Item $Filepath\n    }\n    Write-Verbose \"Ending $($myinvocation.MyCommand)\"\n}<\/code><\/pre>\n\n\n\n<pre title=\"Import-ModuleLayout.ps1\" class=\"wp-block-code\"><code lang=\"powershell\" class=\"language-powershell\">function Import-ModuleLayout {\n    [CmdletBinding(SupportsShouldProcess)]\n    [alias(\"iml\")]\n    [OutputType(\"none\")]\n    Param(\n        [Parameter(Position = 0, Mandatory, HelpMessage = \"What is the name of your new module?\")]\n        [ValidateNotNullOrEmpty()]\n        [ValidatePattern(\"^\\w+$\")]\n        [string]$Name,\n        [Parameter(HelpMessage = \"What is the parent path? The default is the current location\")]\n        [ValidateScript( { Test-Path $_ })]\n        [string]$ParentPath = \".\",\n        [Parameter(Mandatory, HelpMessage = \"Specify the path to the module layout json file.\")]\n        [ValidateScript({Test-Path $_ })]\n        [ValidatePattern(\"\\.json$\")]\n        [string]$Layout\n    )\n\n    Write-Verbose \"Starting $($MyInvocation.MyCommand)\"\n    $ParentPath = Convert-Path $ParentPath\n    Write-Verbose \"Creating module layout for $name under $parentpath using layout from $layout.\"\n    $modpath = New-Item -Path $ParentPath -Name $name -ItemType Directory -Force\n\n    &lt;#\n     ConvertFrom-Json has a bug in Windows PowerShell so\n     piping the converted content to ForEach-Object and\n     passing each object back to the pipeline works around it\n    #>\n    Get-Content -path $Layout |\n    ConvertFrom-Json | ForEach-Object {$_} |\n    Sort-Object -Property ItemType |\n    ForEach-Object {\n        #create all the directories first\n        if ($_.Itemtype -eq 'directory') {\n            if ($pscmdlet.ShouldProcess($_.path, \"Create directory\")) {\n                New-Item -Path $modpath -Name $_.path -ItemType Directory -Force\n            }\n        } #directory item\n        elseif ($_.itemtype -eq 'file') {\n            if ($pscmdlet.ShouldProcess($_.path, \"Create file\")) {\n                $newFile = (Join-Path -Path $modPath -ChildPath $_.path)\n                Set-Content -Path $newfile -Value $_.content\n                Get-Item -path $newFile\n            }\n        } #file item\n    } #foreach-object\n\n    Write-Verbose \"Ending $($MyInvocation.MyCommand)\"\n}<\/code><\/pre>\n\n\n\n<p>I already know of a few changes I want to make but this code is functional now and meets my requirements. Of course, I'm curious about what kind of requirements you might have. <\/p>\n\n\n\n<p>Next time, I'll show you how I put all of recent posts together.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>As I&#8217;ve been working on my new PowerShell project, which I&#8217;ve discussed over recent posts, I keep &#8220;discovering&#8221; fun scripting opportunities. Today I want to share some code I&#8217;ve come up with that makes it easier to build a PowerShell module directory structure. There are plenty of existing tools and scripts for scaffolding a project&#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":"New on the blog: Fun with #PowerShell module layouts","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[4,8],"tags":[411,205,534,540],"class_list":["post-8731","post","type-post","status-publish","format-standard","hentry","category-powershell","category-scripting","tag-json","tag-modules","tag-powershell","tag-scripting"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Fun with PowerShell Module Layout &#8226; The Lonely Administrator<\/title>\n<meta name=\"description\" content=\"Here&#039;s another way you might quickly build out a PowerShell module structure complete with subfolders and items like readme and license files.\" \/>\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\/8731\/fun-with-powershell-module-layout\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Fun with PowerShell Module Layout &#8226; The Lonely Administrator\" \/>\n<meta property=\"og:description\" content=\"Here&#039;s another way you might quickly build out a PowerShell module structure complete with subfolders and items like readme and license files.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jdhitsolutions.com\/blog\/powershell\/8731\/fun-with-powershell-module-layout\/\" \/>\n<meta property=\"og:site_name\" content=\"The Lonely Administrator\" \/>\n<meta property=\"article:published_time\" content=\"2021-12-16T16:17:19+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-12-16T16:17:24+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2021\/12\/sample-module-layout.png\" \/>\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=\"19 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell\\\/8731\\\/fun-with-powershell-module-layout\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell\\\/8731\\\/fun-with-powershell-module-layout\\\/\"},\"author\":{\"name\":\"Jeffery Hicks\",\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/#\\\/schema\\\/person\\\/d0258030b41f07fd745f4078bdf5b6c9\"},\"headline\":\"Fun with PowerShell Module Layout\",\"datePublished\":\"2021-12-16T16:17:19+00:00\",\"dateModified\":\"2021-12-16T16:17:24+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell\\\/8731\\\/fun-with-powershell-module-layout\\\/\"},\"wordCount\":568,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/#\\\/schema\\\/person\\\/d0258030b41f07fd745f4078bdf5b6c9\"},\"image\":{\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell\\\/8731\\\/fun-with-powershell-module-layout\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/12\\\/sample-module-layout.png\",\"keywords\":[\"JSON\",\"modules\",\"PowerShell\",\"Scripting\"],\"articleSection\":[\"PowerShell\",\"Scripting\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell\\\/8731\\\/fun-with-powershell-module-layout\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell\\\/8731\\\/fun-with-powershell-module-layout\\\/\",\"url\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell\\\/8731\\\/fun-with-powershell-module-layout\\\/\",\"name\":\"Fun with PowerShell Module Layout &#8226; The Lonely Administrator\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell\\\/8731\\\/fun-with-powershell-module-layout\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell\\\/8731\\\/fun-with-powershell-module-layout\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/12\\\/sample-module-layout.png\",\"datePublished\":\"2021-12-16T16:17:19+00:00\",\"dateModified\":\"2021-12-16T16:17:24+00:00\",\"description\":\"Here's another way you might quickly build out a PowerShell module structure complete with subfolders and items like readme and license files.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell\\\/8731\\\/fun-with-powershell-module-layout\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell\\\/8731\\\/fun-with-powershell-module-layout\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell\\\/8731\\\/fun-with-powershell-module-layout\\\/#primaryimage\",\"url\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/12\\\/sample-module-layout.png\",\"contentUrl\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/12\\\/sample-module-layout.png\",\"width\":702,\"height\":873},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell\\\/8731\\\/fun-with-powershell-module-layout\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"PowerShell\",\"item\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/category\\\/powershell\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Fun with PowerShell Module Layout\"}]},{\"@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":"Fun with PowerShell Module Layout &#8226; The Lonely Administrator","description":"Here's another way you might quickly build out a PowerShell module structure complete with subfolders and items like readme and license files.","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\/8731\/fun-with-powershell-module-layout\/","og_locale":"en_US","og_type":"article","og_title":"Fun with PowerShell Module Layout &#8226; The Lonely Administrator","og_description":"Here's another way you might quickly build out a PowerShell module structure complete with subfolders and items like readme and license files.","og_url":"https:\/\/jdhitsolutions.com\/blog\/powershell\/8731\/fun-with-powershell-module-layout\/","og_site_name":"The Lonely Administrator","article_published_time":"2021-12-16T16:17:19+00:00","article_modified_time":"2021-12-16T16:17:24+00:00","og_image":[{"url":"https:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2021\/12\/sample-module-layout.png","type":"","width":"","height":""}],"author":"Jeffery Hicks","twitter_card":"summary_large_image","twitter_creator":"@JeffHicks","twitter_site":"@JeffHicks","twitter_misc":{"Written by":"Jeffery Hicks","Est. reading time":"19 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jdhitsolutions.com\/blog\/powershell\/8731\/fun-with-powershell-module-layout\/#article","isPartOf":{"@id":"https:\/\/jdhitsolutions.com\/blog\/powershell\/8731\/fun-with-powershell-module-layout\/"},"author":{"name":"Jeffery Hicks","@id":"https:\/\/jdhitsolutions.com\/blog\/#\/schema\/person\/d0258030b41f07fd745f4078bdf5b6c9"},"headline":"Fun with PowerShell Module Layout","datePublished":"2021-12-16T16:17:19+00:00","dateModified":"2021-12-16T16:17:24+00:00","mainEntityOfPage":{"@id":"https:\/\/jdhitsolutions.com\/blog\/powershell\/8731\/fun-with-powershell-module-layout\/"},"wordCount":568,"commentCount":2,"publisher":{"@id":"https:\/\/jdhitsolutions.com\/blog\/#\/schema\/person\/d0258030b41f07fd745f4078bdf5b6c9"},"image":{"@id":"https:\/\/jdhitsolutions.com\/blog\/powershell\/8731\/fun-with-powershell-module-layout\/#primaryimage"},"thumbnailUrl":"https:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2021\/12\/sample-module-layout.png","keywords":["JSON","modules","PowerShell","Scripting"],"articleSection":["PowerShell","Scripting"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/jdhitsolutions.com\/blog\/powershell\/8731\/fun-with-powershell-module-layout\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/jdhitsolutions.com\/blog\/powershell\/8731\/fun-with-powershell-module-layout\/","url":"https:\/\/jdhitsolutions.com\/blog\/powershell\/8731\/fun-with-powershell-module-layout\/","name":"Fun with PowerShell Module Layout &#8226; The Lonely Administrator","isPartOf":{"@id":"https:\/\/jdhitsolutions.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/jdhitsolutions.com\/blog\/powershell\/8731\/fun-with-powershell-module-layout\/#primaryimage"},"image":{"@id":"https:\/\/jdhitsolutions.com\/blog\/powershell\/8731\/fun-with-powershell-module-layout\/#primaryimage"},"thumbnailUrl":"https:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2021\/12\/sample-module-layout.png","datePublished":"2021-12-16T16:17:19+00:00","dateModified":"2021-12-16T16:17:24+00:00","description":"Here's another way you might quickly build out a PowerShell module structure complete with subfolders and items like readme and license files.","breadcrumb":{"@id":"https:\/\/jdhitsolutions.com\/blog\/powershell\/8731\/fun-with-powershell-module-layout\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jdhitsolutions.com\/blog\/powershell\/8731\/fun-with-powershell-module-layout\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jdhitsolutions.com\/blog\/powershell\/8731\/fun-with-powershell-module-layout\/#primaryimage","url":"https:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2021\/12\/sample-module-layout.png","contentUrl":"https:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2021\/12\/sample-module-layout.png","width":702,"height":873},{"@type":"BreadcrumbList","@id":"https:\/\/jdhitsolutions.com\/blog\/powershell\/8731\/fun-with-powershell-module-layout\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"PowerShell","item":"https:\/\/jdhitsolutions.com\/blog\/category\/powershell\/"},{"@type":"ListItem","position":2,"name":"Fun with PowerShell Module Layout"}]},{"@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":4169,"url":"https:\/\/jdhitsolutions.com\/blog\/powershell\/4169\/friday-fun-updated-ise-scripting-geek-module\/","url_meta":{"origin":8731,"position":0},"title":"Friday Fun: Updated ISE Scripting Geek Module","author":"Jeffery Hicks","date":"January 9, 2015","format":false,"excerpt":"A few years ago I published a module with a number of functions and enhancements for the PowerShell ISE. This ISEScriptingGeek module has remained popular over the last few years. But I wrote it for PowerShell v2. I have also come up with a number of new additions to the\u2026","rel":"","context":"In &quot;Friday Fun&quot;","block_context":{"text":"Friday Fun","link":"https:\/\/jdhitsolutions.com\/blog\/category\/friday-fun\/"},"img":{"alt_text":"geek","src":"https:\/\/i0.wp.com\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2015\/01\/geek-150x150.png?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":8741,"url":"https:\/\/jdhitsolutions.com\/blog\/powershell\/8741\/building-a-powershell-module-inception-style\/","url_meta":{"origin":8731,"position":1},"title":"Building a PowerShell Module Inception-Style","author":"Jeffery Hicks","date":"December 17, 2021","format":false,"excerpt":"Over the course of the last week or so, I've been sharing PowerShell functions and scripts for working with PowerShell functions and scripts. I showed PowerShell functions to export functions to a script file and code to convert scripts to functions It has all been very Inception-like. To wrap this\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\/2021\/12\/psinception.jpg?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":5319,"url":"https:\/\/jdhitsolutions.com\/blog\/powershell\/5319\/a-classy-christmas-powershell-module\/","url_meta":{"origin":8731,"position":2},"title":"A Classy Christmas PowerShell Module","author":"Jeffery Hicks","date":"December 20, 2016","format":false,"excerpt":"Yesterday I showed you a class-based PowerShell script. My intention was to have a little bit of fun and teach you the basics of using a class. But what I gave you was really just the first step. If you wanted to create an actual tool around a class, you\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\/2016\/12\/christmas-wreath13.png?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":8787,"url":"https:\/\/jdhitsolutions.com\/blog\/powershell\/8787\/prerelease-of-psfunctiontools-for-powershell\/","url_meta":{"origin":8731,"position":3},"title":"Prerelease of PSFunctionTools for PowerShell","author":"Jeffery Hicks","date":"January 13, 2022","format":false,"excerpt":"At the end of last year wrote a series of blog posts describing tools and techniques for working with PowerShell scripts and functions. My goal was to build a framework of tools that I could use to automate PowerShell scripting work, such as creating a new module from a group\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\/2022\/01\/psfunctiontools-commands.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2022\/01\/psfunctiontools-commands.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2022\/01\/psfunctiontools-commands.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2022\/01\/psfunctiontools-commands.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2022\/01\/psfunctiontools-commands.png?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2022\/01\/psfunctiontools-commands.png?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":1729,"url":"https:\/\/jdhitsolutions.com\/blog\/scripting\/1729\/ise-scripting-geek-module\/","url_meta":{"origin":8731,"position":4},"title":"ISE Scripting Geek Module","author":"Jeffery Hicks","date":"October 27, 2011","format":false,"excerpt":"Over the last year I've posted functions I've written to extend the Windows PowerShell ISE. I have finally pulled everything together into a module I'm calling the ISE Scripting Geek. Download and extract the zip file (below) to your modules folder. You should end up with a path like 'C:\\Users\\Jeff\\Documents\\WindowsPowerShell\\Modules\\ISEScriptingGeek'.\u2026","rel":"","context":"In &quot;PowerShell ISE&quot;","block_context":{"text":"PowerShell ISE","link":"https:\/\/jdhitsolutions.com\/blog\/category\/powershell-ise\/"},"img":{"alt_text":"ISE Scripting Geek add-on menu","src":"https:\/\/i0.wp.com\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2011\/10\/isescriptinggeek-300x200.png?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":8228,"url":"https:\/\/jdhitsolutions.com\/blog\/active-directory\/8228\/better-active-directory-reporting-with-powershell\/","url_meta":{"origin":8731,"position":5},"title":"Better Active Directory Reporting with PowerShell","author":"Jeffery Hicks","date":"March 18, 2021","format":false,"excerpt":"I've been using Active Directory for over 20 years. I was even one of the first 2000 IT Pros worldwide to obtain an MCSE on Windows 2000. Over the years, I've used a variety of management tools from command-line tools, to VBScript, and eventually PowerShell. Like many of you, I've\u2026","rel":"","context":"In &quot;Active Directory&quot;","block_context":{"text":"Active Directory","link":"https:\/\/jdhitsolutions.com\/blog\/category\/active-directory\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2021\/03\/samplereport.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2021\/03\/samplereport.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2021\/03\/samplereport.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]}],"_links":{"self":[{"href":"https:\/\/jdhitsolutions.com\/blog\/wp-json\/wp\/v2\/posts\/8731","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=8731"}],"version-history":[{"count":0,"href":"https:\/\/jdhitsolutions.com\/blog\/wp-json\/wp\/v2\/posts\/8731\/revisions"}],"wp:attachment":[{"href":"https:\/\/jdhitsolutions.com\/blog\/wp-json\/wp\/v2\/media?parent=8731"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jdhitsolutions.com\/blog\/wp-json\/wp\/v2\/categories?post=8731"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jdhitsolutions.com\/blog\/wp-json\/wp\/v2\/tags?post=8731"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}