在脚本文件之间传递参数

Passing Arguments between script files

我需要将几个参数从文件中的一个脚本传递到另一个脚本。我将当前脚本文件的路径加载到变量中,并添加我想调用的其他脚本的名称和参数。

这是我在Script1.ps1中获得的调用和传递参数的示例:

Param([string]$argument)
$thisScript = Split-Path -Path $MyInvocation.MyCommand.Definition -Parent
.($thisScript+'\anotherScript.ps1 -passedArgument '+$argument)

这是我正在调用的脚本 Script2.ps1 的一部分:

Param([string]$passedArgument)
$passedArgument = "do some work with it HERE"

当我像这样启动第一个脚本时

C:\Users\user1\Desktop\Script1.ps1 -argument datatopass

它写入错误

The term 'C:\Users\user1\Desktop\Script2.ps1 -passedArgument datatopass' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

当我尝试像这样手动使用脚本时

C:\Users\user1\Desktop\Script2.ps1 -passedArgument datatopass

它工作正常,不会报告任何路径或名称错误的错误。

我不知道问题出在哪里,也找不到关于这个错误的任何信息。

您不必将传递的 Argument 及其值连接到字符串。尝试:

& (Join-Path $thisScript 'anotherScript.ps1') -passedArgument $argument