将参数从一个PowerShell脚本传递到另一个

时间:2018-06-13 22:53:01

标签: powershell jenkins

我有一个powershell脚本,就像这个:

$ErrorActionPreference = "Stop"

$WORKDIR=$args[0]

Write-Host "Num of arguments given: " $args.Count

$AllArguments = ""
for ($i = 1; $i -lt $args.Count; $i += 2) {
    $AllArguments = '$AllArguments $args[$i] "$($args[$i+1])"'
}

Write-Host "AllArguments: $($AllArguments)"

Write-Host "Starting .\someotherscript.ps1 in directory $($WORKDIR)"

pushd "$WORKDIR"

& Powershell -File .\someotherscript.ps1 $AllArguments

popd 

基本上,这个powershell脚本应该启动另一个PowerShell脚本,但没有第一个参数。所以,例如当此脚本以.\firstscript.ps1 C:\some\dir -GiveMeParameter param1启动时,它应使用以下参数调用另一个脚本.\someotherscript.ps1 -GivMeParameter param1

如何实现?目前我不知道如何解决这个问题。

1 个答案:

答案 0 :(得分:3)

您可以使用多个赋值通过执行

来提取第一个和剩余的参数
$WORKDIR, $RemainingArgs = $args

我不确定为什么你再次调用PowerShell来运行脚本。您可以直接运行脚本并使用splatting将剩余的args传递给子脚本。

.\someotherscript.ps1 @RemainingArgs