A reader (thanks Jeff!) of my previous post wrote to mention that there’s an even easier way to insert a space between characters. Use the -replace
operator thus:
1 |
-replace '([0-9a-f]{2})', '$1 ' |
So simple!
The -replace
help page doesn’t give much details on using regular expressions. Jeff pointed to the Regex.Replace()
method help page, which is where he got the idea from. I tried to search for more info on this and came across this post by Don Jones and this Wiki page on TechNet.
I had wanted to use the -replace
operator initially but was stumped at how to get automatic variables like $1
, $2
, $3
, … for each of the (bracketed) matches it finds. Turns out there’s no need to do that! Each match is a $1
.
ps. From Jeff’s code I also realized I was over-matching in my regular expression. The thumbprints are hex characters so I only need to match [0-9A-F]
rather than [0-9A-Z]
. For reference here’s the final code to get certificate thumbprints and display with a space:
1 |
Get-ChildItem Cert:\LocalMachine\Root | Format-Table @{ Name = "Thumbprint"; Expression = { $_.Thumbprint -replace '([0-9A-f]{2})', '$1 ' }}, Subject -AutoSize |