What's the difference between .replace and -replace in powershell?
While @Keith Hill's answer explains the difference between Replace
method and the -replace
operator, to explain why you might not see the same result, it is because you are using the String.Replace
method which does string replace and -replace
operator uses regex replace. You can use the Regex.Replace method for this purpose and you should see the same effect:
[regex]::replace($a,'.:\\LOGROOT\\', "\\$env:computername\logroot\")
In short, the -replace
operator is same as Regex.Replace
(the particular overload linked above), but in general Replace()
can be instance or static method that can be doing anything completely different from -replace
They are not the same thing. .Replace
is a .NET method either on System.String or any other type with an instance method named Replace
. -replace
is a PowerShell operator that that uses regular expressions. Run man about_operators
to see more info on the -replace
operator.