我想自动执行一项任务,我需要调用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
可以读取并执行它?
答案 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