在我的批处理文件中,我这样调用PowerShell脚本:
powershell.exe "& "G:\Karan\PowerShell_Scripts\START_DEV.ps1"
现在,我想将字符串参数传递给START_DEV.ps1
。假设参数是w=Dev
。
我怎样才能做到这一点?
Answers:
假设您Dev
要从批处理文件中将字符串作为参数传递:
powershell -command "G:\Karan\PowerShell_Scripts\START_DEV.ps1 Dev"
放在您的powershell脚本头中:
$w = $args[0] # $w would be set to "Dev"
如果您想使用内置变量$args
。除此以外:
powershell -command "G:\Karan\PowerShell_Scripts\START_DEV.ps1 -Environment \"Dev\""
在您的powershell脚本头中:
param([string]$Environment)
如果需要命名参数,则使用此选项。
您可能还对返回错误级别感兴趣:
powershell -command "G:\Karan\PowerShell_Scripts\START_DEV.ps1 Dev; exit $LASTEXITCODE"
错误级别将在批处理文件中显示为%errorlevel%
。
加载脚本时,所有传递的参数都会自动加载到特殊变量中$args
。您可以在脚本中引用它,而无需先声明它。
例如,创建一个名为的文件test.ps1
,并将变量$args
本身单独放在一行上。像这样调用脚本,将产生以下输出:
PowerShell.exe -File test.ps1 a b c "Easy as one, two, three"
a
b
c
Easy as one, two, three
作为一般建议,当直接通过调用PowerShell来调用脚本时,我建议使用该-File
选项,而不是使用&
- 隐式调用- 该选项可以使命令行更简洁,特别是在需要处理嵌套引号的情况下。