Get-ChildItemColor
Get-ChildItemColor copied to clipboard
Provides colorized version of Get-ChildItem Cmdlet of PowerShell.
Created 2019-07-20 Sat 10:30
#+TITLE: Get-ChildItemColor #+AUTHOR: Joon Ro
=Get-ChildItemColor= provides colorization of outputs of ~Get-ChildItem~ Cmdlet of PowerShell. It is based on Tim Johnson's [[http://tasteofpowershell.blogspot.com/2009/02/get-childitem-dir-results-color-coded.html][script,]] another [[http://mow001.blogspot.com/2006/01/colorized-msh-ls-replacement.html][script]] by [[http://thepowershellguy.com/][the PowerShell Guy]], and [[https://github.com/Davlind/PSColor][PSColor]].
It provides two main functionalities:
- ~Get-ChildItemColor~, which adds coloring to the output of ~Get-ChildItem~.
- ~Get-ChildItemColorFormatWide~, which is colored version of ~Get-ChildItemColor | Format-Wide~. This uses ~Write-Host~ to output coloring, because ~Get-ChildItemColor | Format-Wide~ does not allow multiple colors in one line.
=Get-ChildItemColor= has the following features:
- Both functions support pipelines --- they are pipeline-aware, so they just return untouhed output of ~Get-ChildItem~ when used as a part of a pipeline.
- As of v3.0.0, it no longer overloads ~Out-Default~, and thus does not have unintended consequences.
- Both functions work as intended inside OneDrive directories.
- Screenshots ** Get-ChildItemColor [[file:./screenshots/Get-ChildItemColor.png]] ** Get-ChildItemColorFormatWide (=ls= equivalent) [[file:./screenshots/Get-ChildItemColorFormatWide.png]]
- Install ** Install from [[https://www.powershellgallery.com/packages/Get-ChildItemColor/][PowerShellGallery]] PowerShellGet is required, which is included in Windows 10 and WMF5. If you are using PowerShell V3 or V4, you will need to install [[https://www.microsoft.com/en-us/download/details.aspx?id=49186][PowerShellGet]].
Then, you can run =Install-Module Get-ChildItemColor=. ** Install from GitHub After cloning the repo, you can put files in =/src= folder into =Get-ChildItemColor= folder under your =PSModulePath= (e.g., =$ENV:UserProfile\Documents\PowerShell\Modules= for PowerShell 6 and later). The =master= branch always contains the latest release version. ** Install from [[https://chocolatey.org][Chocolatey]] The module is available as a [[https://chocolatey.org/packages/get-childitemcolor][Chocolatey package]]. Install it using =choco install get-childitemcolor=.
- Usage When you import the module:
#+begin_src powershell Import-Module Get-ChildItemColor #+end_src
it provides two functions, =Get-ChildItemColorFormatWide= and =Get-ChildItemColor=.
You can add aliases to these functions for convenience. For example, I have the following in my profile[fn:pathProfile] (please do not put this into ISE profile[fn:pathProfileISE] as it does not work in ISE):
#+begin_src powershell If (-Not (Test-Path Variable:PSise)) { # Only run this in the console and not in the ISE Import-Module Get-ChildItemColor
Set-Alias l Get-ChildItemColor -option AllScope
Set-Alias ls Get-ChildItemColorFormatWide -option AllScope [-HideHeader] [-TrailingSlashDirectory]
} #+end_src
So =l= yields colored output of =Get-ChildItem= and =ls= yields colored output of =Get-ChildItem | Format-Wide= equivalent.
~Get-ChildItemColorFormatWide~ has the following optional switches:
- -HideHeader :: supress printing of headers (path on top).
- -TrailingSlashDirectory :: add a trailing slash to directory names.
[fn:pathProfile] ~$Home[My ]Documents\PowerShell\Profile.ps1~ or ~$Home[My ]Documents\WindowsPowerShell\Profile.ps1~
[fn:pathProfileISE] ~$Home[My ]Documents\WindowsPowerShell\Microsoft.PowerShellISE_profile.ps1~
** Customizing color One can dynamically change the color scheme for different items, thanks to [[https://github.com/asidlo][asidlo]]'s [[https://github.com/joonro/Get-ChildItemColor/pull/23][contribution]]. See the example below.
#+begin_src powershell
Change color for directories to Blue
$GetChildItemColorTable.File['Directory'] = "Blue"
Change color for executables to Green
ForEach ($Exe in $GetChildItemColorExtensions['ExecutableList']) { $GetChildItemColorTable.File[$Exe] = "Green" } #+end_src ** Adding a new category One can create a new category and assign colors easily like the example below. #+begin_src powershell $GetChildItemColorExtensions['OfficeList'] = @( ".docx", ".pdf", ".pptx", ".xlsx" )
ForEach ($Extension in $GetChildItemColorExtensions['OfficeList']) { $GetChildItemColorTable.File.Add($Extension, "Green") } #+end_src ** Customizing vertical space You can adjust the vertical spacing using =$Global:GetChildItemColorVerticalSpace=. Default is 1 (PowerShell's default is 2).
#+begin_src powershell $Global:GetChildItemColorVerticalSpace = 1 #+end_src
- Authors
- [[http://github.com/joonro][Joon Ro]].
- Changelog
- See [[https://github.com/joonro/Get-ChildItemColor/releases][Releases]] for newer changelog. ** v2.4.0
- Add ~HideHeader~ switch to ~Get-ChildItemColorFormatWide~ ([[https://github.com/joonro/Get-ChildItemColor/issues/29][#29]]) ** v2.3.0
- Better handling of header printout ([[https://github.com/joonro/Get-ChildItemColor/issues/41][#41]]) ** v2.2.2
- Add instructions about adding a new category. ** v2.2.1
- [[https://github.com/joonro/Get-ChildItemColor/pull/44][Fix uint32 error in cell width calculation]]. (Thanks to [[https://github.com/DanielCarmingham][DanielCarmingham]])
- [[https://github.com/joonro/Get-ChildItemColor/pull/35][Add Chocolatey install instructions]]. (Thanks to [[https://github.com/pauby][pauby]]) ** v2.2.0
- Fix #27, Display issue with Chinese. (Thanks to [[https://github.com/shiena][shiena]]) ** v2.1.1
- BUGFIX: Print directory names correctly when =-Recurse= option is used ** v2.1.0
- Re-organize folder structure ** v2.0.0
- Incorporate [[https://github.com/Davlind/PSColor][PSColor]]'s implementation of coloring the output of =Get-ChildItem=.
- Add =$Global:GetChildItemColorVerticalSpace= option. ** v1.3.1
- PR #21: Added ReparsePoint (symlink) detection, matched color scheme with Linux (thanks to [[https://github.com/cmilanf][cmilanf]])
- Make empty lines consistent between Get-ChildItemColor and Get-ChildItemColorFormatWide (Fixes [[https://github.com/joonro/Get-ChildItemColor/issues/17][#17]]) ** v1.3.0
- PR [[https://github.com/joonro/Get-ChildItemColor/pull/23][#23]]: Added customizable color output. (thanks to [[https://github.com/asidlo][asidlo]])
- Improve README ** v1.2.3
- Add LICENSE ** v1.2.2
- Improve README (#15)
- Beautify code ** v1.2.1
- PR #13: Fallback to Gray when no =OriginalForegroundColor= (thanks to [[https://github.com/joonro/Get-ChildItemColor/issues?q=is%3Apr+author%3Amikesigs][mikesigs]])
- PR #12: Fix a typo (thanks to [[https://github.com/joonro/Get-ChildItemColor/issues?q=is%3Apr+author%3Ajqly][jqly]]) ** v1.2.0
- Robust to non-file entries (Issue #10) ** v1.1.0
- Revert back to previous implementation of =Get-ChildItemColorFormatWide= ** v1.0.0
- The script changes =$Host.UI.RawUI.ForegroundColor= only and keep the item object intact
- =Get-ChildItemColorFormatWide= is basically =Get-ChildItemColor | Format-Wide= ** v0.5.3
- Better performance by reducing if's
- Proper printing of =DirectoryEntry= for =FormatWide= case ** v0.5.2
- Published on PowerShellGallery
- Refactoring; separate out two functions ** v0.4.2
- Make it a PowerShell module ** v0.4.1
- Returns vanila =Get-Childitem= results for =DictionaryEntry= cases. ** v0.4.0
- Make function names consistent to the PowerShell naming convention (#8)
- Use parameters more consistently, =-Path= works with paths with spaces (#3), and =-Force= works (#9)