Why do the Write-Host outside of the function work different than inside of the function?
It seems like somehow the parameters variables are changing from what I declared it to be…
function a([string]$svr, [string]$usr) {
$x = "$svr\$usr"
Write-Host $x
}
$svr = 'abc'
$usr = 'def'
$x = "$svr\$usr"
Write-Host $x
a($svr, $usr)
Results…
abc\def
abc def\
Best Answer
Don't call functions or cmdlets in PowerShell with parentheses and commas (only do this in method calls)!
When you call
a($svr, $usr)
you're passing an array with the two values as the single value of the first parameter. It's equivalent to calling it likea -svr $svr,$usr
which means the$usr
parameter is not specified at all. So now$x
equals the string representation of the array (a join with spaces), followed by a backslash, followed by nothing.Instead call it like this: