PowerShell function parameters syntax

Refresh

December 2018

Views

2.2k time

2

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\

1 answers

7

Не вызывать функции или командлеты в PowerShell со скобками и запятыми (делать это только в вызове метода)!

При вызове a($svr, $usr)вы передаете массив с 2 значений в качестве единственного значения первого параметра. Это эквивалентно вызову это так , a -svr $svr,$usrчто означает $usrпараметр не задан вообще. Так что теперь $xравен строковое представление массива (объединение с пробелами), а затем обратной косой черты, за которым ничего.

Вместо того, чтобы назвать это так:

a $svr $usr
a -svr $svr -usr $usr