在脚本文件之间传递参数

时间:2015-07-02 10:39:16

标签: powershell argument-passing

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

以下是featuresBoot=config,ssh,management,kar,\ basit-core-domain,\ #basit-datasource-ecom,\ basit-connector-ecom,\ basit-datasource-talendmd,\ basit-connector-talendmd,\ basit-datasource-hybris,\ basit-connector-hybris,\ basit-connector-sap,\ basit-connector-jms,\ #basit-order-service,\ #basit-article-service,\ #basit-checkout-service,\ #basit-checkout-service,\ #basit-cart-service,\ basit-server-availability,\ #basit-address-service,\ #basit-user-service,\ basit-connector-atp-engine 中调用和传递参数的示例:

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 \ Script2.ps1 -passedArgument datatopass'不被识别为cmdlet,函数,脚本文件或可操作程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。

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

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

它运行正常,并且不会报告错误路径或名称的任何错误。

我不知道问题出在哪里,而且我无法找到有关此错误的任何内容。

1 个答案:

答案 0 :(得分:1)

您不必将passedArgument的值与字符串连接起来。尝试:

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