Невозможно запустить программу через PowerShell через Планировщик заданий

Невозможно запустить программу через PowerShell через Планировщик заданий

У меня есть простой скрипт powershell, который определяет, запущена ли программа, и если нет, то запускает ее. Он отлично работает, когда я щелкаю правой кнопкой мыши и выбираю "Запустить с PowerShell" скрипт, но если изменить программу по умолчанию для .ps1 на powershell и дважды щелкнуть по нему, то ничего не происходит. Кроме того, он не работает в планировщике задач. Для справки, вот мой скрипт:

$filebound = get-process FileBound.Enterprise.ChainEditor -ErrorAction SilentlyContinue
if($filebound -eq $null)
{
    start-process -filepath "C:\Program Files (x86)\FileBound\Importer Professional\FileBound.Enterprise.ChainEditor.exe"
}

Я не могу найти правильный способ аргументировать действие в планировщике задач, чтобы оно работало. Когда он запускает задачу, экран оболочки Power появляется и исчезает, но приложение не запускается (такое же поведение, как и при двойном щелчке).

Вот информация о моем задании:

Run only when user is logged in and run with highest priveleges checked.  Configured for Windows 10 (it's a windows 10 vm).
Triggers at startup and repeats every 30 minutes indefinitely.  Enabled is checked
Actions starts a program (powershell)
C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe
with argument (stolen from someone else) -command "& C:\Filebound\Test.ps1" -NonInteractive
Only Condition checked is Wake computer to run task.
Settings are Allow Task to run on demand and Run task as soon as possible are checked.

Любая помощь будет оценена по достоинству.

решение1

Разобрался. Это было связано с аргументом в планировщике заданий. Как только я его установил: -ExecutionPolicy Bypass C:\Filebound\Test.ps1все заработало.

Примечание: мне пришлось настроить задачу так, чтобы она срабатывала «Когда компьютер бездействует» вместо «При запуске», чтобы сделать ее более надежной.

решение2

Вы можете использовать PowerShell, чтобы установить политику выполнения без ограничений, тогда вам не придется указывать -ExecutionPolicy Bypassпараметр каждый раз, когда вам нужно запустить скрипт ps1.

Вы можете открыть PowerShell, но этот метод требует прав администратора. Используйте это, чтобы открыть PowerShell с повышенными правами:

Win+ R→тип PowerShellCtrl+ Shift+Enter

Затем вставьте их в окно PowerShell:

New-Item -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell" -ErrorAction SilentlyContinue | Out-Null
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell" -Name EnableScripts -Type DWord -Value 1
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell" -Name ExecutionPolicy -Type String -Value Unrestricted

И тогда вам не придется обходить политику выполнения для запуска скриптов.

Это эквивалентно изменению этой групповой политики:

Win+ R→тип gpedit.mscEnter

Перейдите к:

"Local Computer Policy"→"Computer Configuration"→"Administrative Templates"→"Windows Components"→"Windows PowerShell"

на левой панели нажмите «Windows PowerShell».

С правой стороны дважды щелкните «Включить выполнение скриптов», щелкните «Включено» и выберите «Разрешить все скрипты» в раскрывающемся списке «Политика выполнения», щелкните Apply, затем щелкните OK.

Связанный контент