从任务计划程序打开或传递参数时,Powershell 脚本不会运行

问题描述 投票:0回答:1

我在任务计划程序/脚本提示符中调用 PowerShell 应用程序,如下所示:

C:\Windows\System32\WindowsPowerShell 1.0\powershell_ise.exe

然后,我在“添加参数”提示中调用可执行脚本,如下所示:

C: hwebster\PSISE_Scripts\OpenExcelFile.ps1

这会在 PowerShell 窗口中成功打开我的脚本。但是,它不会运行脚本。

我还需要将参数从任务调度程序传递到脚本,为此我尝试了 -File 方法:

-文件“C: hwebster\PSISE_Scripts\OpenExcelFile.ps1”fpathfname 'C: hwebster\VBA\DailyEconomicCalendar.xlsm'

这会将 fpathfname 参数读取为第二个文件并批评我的语法。

我也尝试过-Command方法:

-命令“& C: hwebster\PSISE_Scripts\OpenExcelFile.ps1 -fpathfname 'C: hwebster\VBA\DailyEconomicCalendar.xlsm'”

这将返回一个错误处理参数:没有具有以下名称的选项:命令。

我已经尝试了 -File 和 -Command 内容周围的引号和单引号的所有迭代,但也没有成功。我需要输入什么才能成功运行 PowerShell 脚本并从任务计划程序传递参数?

powershell parameter-passing windows-task-scheduler
1个回答
2
投票

Windows 10 64 位。 PowerShell 5.1

如何将参数从 Windows 计划任务传递到 PowerShell 脚本。

使用以下内容创建 %USERPROFILE%\Desktop .ps1:

Write-Output "
All the arguments are: $args"
Write-Output "    The first argument is: " $args[0]
Write-Output "    The second argument is: " $args[1]
cmd /c pause 
exit 

建立您的计划任务:

停止的任务有时会留下 conhost.exe 的实例。如果它没有被杀死,任务可能会失败。将以下命令作为您任务的第一个操作:

taskkill /f /im conhost.exe 

如果您的参数中没有空格和/或引号,则不必引用该参数。

powershell %USERPROFILE%\Desktop\1.ps1 Argument1 Argument2

如果你的参数中有空格和/或引号,你必须用单引号括住参数。

powershell %USERPROFILE%\Desktop\1.ps1 'Argument One' 'Argument Two' 
powershell %USERPROFILE%\Desktop\1.ps1 '"ArgumentOne"' '"ArgumentTwo"' 

将整个命令复制并粘贴到“程序/脚本:”框中的新操作中,然后单击“确定”。 Windows 10 任务计划程序会询问您是否要在“程序/脚本”和“添加参数”之间拆分粘贴。单击“是”。

参考资料:

© www.soinside.com 2019 - 2024. All rights reserved.