Sometimes when we automate things, some technologies don’t play nice with characters we’ve gotten from a different technology. Case in point, my recent post about documenting your SCOM Distributed Applications, I found a test case where a user entered a backslash in the name of a Distributed Application. When Powershell was trying to enter this name as the name of a sheet in Excel, it was failing to add it correctly. So I needed to replace the backslash in the string with a different character.
The key here is to use -replace function
With the replace function we can replace any character we want, very simply.
for instance:
1 | $test = "44553" -replace , '4' |
Would replace all the 4’s in our variable regardless of their location.
We could further use this by using a variable with our pattern that we want to find and replace.
1 2 | $pattern = '4' $test = "44553" -replace $pattern , '5' |
This would output 55553.
The problem, however arises when we need to get rid of a backslash. In Powershell the backslash is an escape character, so we have to double it up.
1 2 3 | $pattern = '[\\/]' $string = "this/is\a/\test" $string = $string -replace $pattern , '-' |
and we get: