将参数从批处理文件传递到PowerShell

时间:2017-11-30 13:52:21

标签: windows powershell batch-file batch-processing powershell-v4.0

我想自动执行一项任务,我需要调用PowerShell脚本并向其传递一些参数(我不是该脚本的所有者,所以我无法对其进行修改)。有没有办法通过调用PowerShell脚本从批处理文件传递参数?当我尝试手动调用.ps1文件时,请找到以下文本:

C:\Users\spa8\Desktop\V6_Git>git_powershell.bat

cmdlet New-MergeRequest.ps1 at command pipeline position 1
Supply values for the following parameters:
From_Branch: Xdev
To_Branch: master
Merge_Title: test
ADL_Issues[0]:

这里我正在调用git_powershell.bat文件,该文件正在调用New-MergeRequest.ps1文件。有没有办法可以在git_powershell.bat文件中传递Xdev,master等参数,以便New-MergeRequest.ps1可以读取并执行它?

2 个答案:

答案 0 :(得分:0)

您已提示输入,因为PowerShell脚本将参数定义为mandatory,但在没有它们的情况下调用了这些参数。为了避免这种情况,您可以简单地将参数作为参数传递给PowerShell脚本,作为位置参数:

New-MergeRequest.ps1 Xdev master "a test" ...

或命名参数:

New-MergeRequest.ps1 -From_Branch Xdev -To_Branch master -Merge_Title "a test" ...

如果您不想对批处理文件中的参数进行硬编码,则需要将batch file parameters传递给PowerShell脚本,如下所示:

New-MergeRequest.ps1 "%~1" "%~2" "%~3" ...

或(如果要将所有批处理文件参数传递给PowerShell脚本),如下所示:

New-MergeRequest.ps1 %*

并像这样调用批处理文件:

git_powershell.bat Xdev master "a test" ...

请注意,批处理脚本仅支持位置参数,而不支持命名参数,因此您必须以正确的顺序提供所有参数。

答案 1 :(得分:0)

在.bat文件中:

powershell -File "file" %*

并称之为:

git_powershell.bat -Xdev arg1 -master uri
相关问题