PowerShell 函数参数语法
Posted
技术标签:
【中文标题】PowerShell 函数参数语法【英文标题】:PowerShell function parameters syntax 【发布时间】:2015-01-12 12:46:32 【问题描述】:为什么函数外部的Write-Host 与函数内部的工作方式不同?
似乎参数变量与我声明的不同...
function a([string]$svr, [string]$usr)
$x = "$svr\$usr"
Write-Host $x
$svr = 'abc'
$usr = 'def'
Write-Host "$svr\$usr" # abc\def
a($svr, $usr) # abc def
【问题讨论】:
【参考方案1】:不要在 PowerShell 中使用括号和逗号调用函数或 cmdlet(仅在方法调用中这样做)!
当您调用a($svr, $usr)
时,您将传递一个数组,其中两个值作为第一个参数的单个值。这相当于像a -svr $svr,$usr
这样调用它,这意味着根本没有指定$usr
参数。所以现在$x
等于数组的字符串表示形式(带空格的连接),后跟一个反斜杠,后跟什么都没有。
改为这样称呼它:
a $svr $usr
a -svr $svr -usr $usr
【讨论】:
我每天都在使用 Powershell,但时不时会犯这个完全错误,然后花 10 多分钟把头发拔掉。 哦,我想指出的是,使用Set-StrictMode
可以帮助您发现这个错误。以上是关于PowerShell 函数参数语法的主要内容,如果未能解决你的问题,请参考以下文章
运行从 PowerShell 显式获取参数的 Python 函数(无需单独传递参数)
PowerShell-自定义函数-参数互斥:ParameterSetName
powershell 模板powershell函数,占位符解释了Powershell中发生的高级参数绑定。用法:见里面的评论