$($ args [2])未打印传递的参数

时间:2018-09-29 00:57:01

标签: powershell batch-file

我有一个带有以下行的批处理文件(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

它什么也不打印:

Not printing

1 个答案:

答案 0 :(得分:2)

我弄清楚了为什么...

因此,显然,args与param()的关系不佳。

我有param($App_input)首先将%1用于应用程序输入,然后将%2的Process.ps1输入接受。并且由于必须在脚本的顶部定义param(),因此它对args的作用似乎不佳。

我注释掉param(),$($ args [1])打印得很好

但是,我应该在参数中轻松添加$ Script而不是args

param($App_input, $Script)

现在好多了