PowerShell脚本中如何用相对路径点源脚本并传递参数
点源PowerShell脚本并传递参数的正确方法
你遇到的问题是点源同目录脚本时无法传递参数,核心是参数的位置写错了,以下是两种正确的写法:
写法一(推荐,可读性更高)
直接将脚本路径(用引号包裹避免路径含特殊字符时出错)和参数分开写:
. "$PSScriptRoot\header.ps1" -PROJECTNAME 'LunchBox' -SCRIPTNAME 'MyLunch.ps1'
写法二(适合路径需要动态计算的场景)
如果路径是通过表达式计算得到的,把路径放在括号里,参数跟在括号外面即可:
. ($PSScriptRoot + '\header.ps1') -PROJECTNAME 'LunchBox' -SCRIPTNAME 'MyLunch.ps1'
错误写法的问题
你之前的不可运行写法,错误地把参数和路径表达式放在了同一个括号内,PowerShell会将整个括号内容当作一个字符串表达式解析,无法识别后面的参数语法。点源运算符(.)的逻辑是:先指定要加载的脚本路径,再跟参数列表,两者不能混在同一个表达式里。
另外你header.ps1里的参数定义是规范的,带[CmdletBinding()]的param块完全支持这种命名参数传递方式,只要参数位置正确就能正常生效。
内容的提问来源于stack exchange,提问作者Liang Cui
相关产品推荐
相关产品推荐

