-join (1..255 | % { "`e[48;5;$($_)m {0:00#} `e[0m" -f $_ + ($_ % 15 -eq 0 ? "`n" : " ") })
-join (1..255 | % { "`e[48;5;$($_)m {0:00#} `e[0m" -f $_ + ($_ % ($host.ui.RawUI.WindowSize.Width / 10) -eq 0 ? "`n" : " ") })
#Windows Powershell compatible version
-join (1..255 | % { "$([char]27)[48;5;$($_)m {0:00#} $([char]27)[0m" -f $_;if ($_ % ($host.ui.RawUI.WindowSize.Width / 10) -eq 0) { "`n" } else { " " } })
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <# | |
| yoinked and just stripped the namespace and change internal to public | |
| https://github.com/PowerShell/PowerShell/blob/master/src/System.Management.Automation/utils/FuzzyMatch.cs | |
| https://www.geeksforgeeks.org/damerau-levenshtein-distance/ | |
| https://yassineelkhal.medium.com/the-complete-guide-to-string-similarity-algorithms-1290ad07c6b7 | |
| #> | |
| Add-Type -TypeDefinition @' | |
| // Copyright (c) Microsoft Corporation. | |
| // Licensed under the MIT License. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| class EncodingAttribute : System.Management.Automation.ArgumentTransformationAttribute { | |
| [object] Transform([System.Management.Automation.EngineIntrinsics]$engineIntrinsics, [object] $inputData) { | |
| if ( $inputData -is [string] ) { | |
| return [Text.Encoding]::GetEncoding($inputData) | |
| } else { | |
| return $inputData | |
| } | |
| } | |
| } |
We are, for now, just using the official github copilot CLI, but they didn't really have hooks for PowerShell, so I wrote a few functions to implement it.
It works great, as you can see:
Default settings in VS Code are dynamic. They are generated based on your extensions's metadata. That means they are up to date. I have some tips for discovering new settings in Vs Code through Default settings (ninmonkeys.com)
Another extension that helps is Better Align
The main settings:


{ "powershell.codeFormatting.autoCorrectAliases": true, "powershell.codeFormatting.useConstantStrings": true, "powershell.codeFormatting.useCorrectCasing": true, "powershell.codeFormatting.alignPropertyValuePairs": true,