PowerShell函数参数语法

问题描述 投票:2回答:1

为什么函数外部的Write-Host与函数内部的工作方式不同?

似乎某种程度上参数变量正在从我声明的变化......

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)

结果...

ABC \ DEF

abc def \

powershell powershell-v3.0
1个回答
8
投票

不要在PowerShell中使用括号和逗号调用函数或cmdlet(仅在方法调用中执行此操作)!

当你调用a($svr, $usr)时,你传递一个数组,其中两个值作为第一个参数的单个值。它等同于将其称为a -svr $svr,$usr,这意味着根本没有指定$usr参数。所以现在$x等于数组的字符串表示形式(带空格的连接),后跟反斜杠,后面没有任何内容。

而是像这样称呼它:

a $svr $usr
a -svr $svr -usr $usr
© www.soinside.com 2019 - 2024. All rights reserved.