我有一个带有以下行的批处理文件(runPowerShell.bat):
Powershell.exe -ExecutionPolicy ByPass -File %psFile% %2 %3 %4 %5
%1是psFile,在其中传递了powershell文件
%2是我打算稍后通过的另一个论点
%3是我现在要打印的arg
powershell文件(scriptWrapper.ps1)包含以下内容:
param($App_input)
$Script = "$($args[2])" #%2 for process or sync
write-host $Script
还有一个名为
的PowerShell文件。Process.ps1
我希望作为%3参数传递,意思是$args[2]
如果我说write-host "$args[2]"
,它的打印内容如下:
Process.ps1 [2]
所以它有点用,但是我不希望使用位置参数,因此我遵循了该线程进行指导,而解决方案($($args[2])
)是有意义的,但是我不确定为什么它对我不起作用>
accessing the $args array in powershell
它什么也不打印:
答案 0 :(得分:2)
我弄清楚了为什么...
因此,显然,args与param()的关系不佳。
我有param($App_input)
首先将%1用于应用程序输入,然后将%2的Process.ps1输入接受。并且由于必须在脚本的顶部定义param(),因此它对args的作用似乎不佳。
我注释掉param(),$($ args [1])打印得很好
但是,我应该在参数中轻松添加$ Script而不是args
param($App_input, $Script)
现在好多了