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 |
