我有一个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
。
如何实现?目前我不知道如何解决这个问题。
答案 0 :(得分:3)
您可以使用多个赋值通过执行
来提取第一个和剩余的参数$WORKDIR, $RemainingArgs = $args
我不确定为什么你再次调用PowerShell来运行脚本。您可以直接运行脚本并使用splatting将剩余的args传递给子脚本。
.\someotherscript.ps1 @RemainingArgs