Сценарий Powershell не будет запускаться при открытии или передаче параметра из планировщика задач - PullRequest
0 голосов
/ 29 января 2020

Я вызываю приложение PowerShell в командной строке «Программа / сценарий» планировщика задач следующим образом:

C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ powershell_ise.exe

I затем вызовите исполняемый скрипт в приглашении Добавить аргументы следующим образом:

C: \ 1hwebster \ PSISE_Scripts \ OpenExcelFile.ps1

Это успешно откроет мой скрипт в окне PowerShell. Однако он не запускает сценарий.

Мне также нужно передать параметр из планировщика задач в сценарий, для которого я попробовал метод -File:

-File "C: \ 1hwebster \ PSISE_Scripts \ OpenExcelFile.ps1 "fpathfname 'C: \ 1hwebster \ VBA \ DailyEconomicCalendar.xlsm'

Это считывает параметр fpathfname как второй файл и критикует мой синтаксис. enter image description here

Я также попробовал метод -Command:

-Command "& C: \ 1hwebster \ PSISE_Scripts \ OpenExcelFile.ps1 -fpathfname 'C: \ 1hwebster \ VBA \ DailyEconomicCalendar.xlsm '"

Возвращает аргументы обработки ошибок: нет опции со следующим именем: Команда. enter image description here

Я пробовал все итерации кавычек и одинарных кавычек вокруг содержимого -File и -Command, но также безуспешно. Что мне нужно набрать, чтобы успешно запустить скрипт PowerShell и передать параметр из планировщика задач? Заранее спасибо.

1 Ответ

1 голос
/ 29 января 2020

Windows 10 64-бит. PowerShell 5.1

Как передать аргументы из запланированной задачи Windows в сценарий PowerShell.

Если вы тестируете это как запланированное задание, создайте новое действие и сначала запустите его:

taskkill /f /im conhost.exe 

В случае невыполненных заданий иногда остается экземпляр conhost.exe. Если его не уничтожить перед запуском сценария, сценарий может завершиться ошибкой.

Добавить в сценарий powershell% USERPROFILE% \ Desktop \ 1.ps1:

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

Создайте запланированное действие задачи:

Если в аргументе / аргументах нет пробелов или кавычек, вам не нужно указывать аргумент / ы.

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

Если в аргументе / аргументах есть пробелы и / или кавычки Вы должны заключить в кавычки аргумент / s.

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

Скопируйте и вставьте всю команду в новое действие, и Windows 10 Task Scheduler спросит вас, хотите ли вы разделить вставку между "Program / Скрипт »и« Добавить аргументы ». Нажмите на ОК. Нажмите Да.

screenshot paste command into new action

См. stackoverflow

См. Поиск Bing - передача аргументов в powershell скрипт

См. Поиск Bing - windows аргументы передачи запланированной задачи в сценарий powershell

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...