Планировщик заданий Windows Powershell получает URL-адрес и загружает файл

Я борюсь с автоматизацией загрузки файла с веб-сайта, который открывает новую вкладку при запуске загрузки и закрывает ее прямо перед тем, как в главном окне появится приглашение «Сохранить/Открыть/Закрыть». Сам скрипт отлично работает при запуске вручную, пока я не попробую его в планировщике заданий. Он работает отлично, пока не зависает при загрузке. Я включил код для захвата URL-адреса файла, который необходимо загрузить, а затем передать его в Invoke-WebRequest, который отлично работает из PowerShell ISE, но не возвращает никаких результатов при запуске из планировщика заданий. Я включил в код счетчик и создание тестового файла, чтобы увидеть, выполняется ли вообще содержимое do-while, и все 10 попыток были записаны. Это часть, которая выполняет поиск по активным URL-адресам, которые не возвращают результаты при запуске через планировщик заданий.

# >> Keep trying to capture the CSV download link
$i = 1
Do {
    $i | Add-Content -Path "C:\userfolder\try.txt"
    $urls = (New-Object -ComObject Shell.Application).Windows() |
    Where-Object {$_.LocationUrl -like "https://sitename.com/ReportViewer*"} |
    Where-Object {$_.LocationUrl}
    $reportURL = @($urls)[0].LocationURL
    $i ++
    }
While ($reportURL -eq $NULL -and $i -le 10)

# >> Send download link to web request and save to file
Invoke-WebRequest -Uri $reportURL -OutFile "C:\userfolder\ProfileList.csv"

Я пробовал Wscript.Shell AppActivate and SendKeys('%S') раньше, но AppActivate не работал, вероятно, потому, что окно консоли PowerShell перехватывало фокус при запуске через планировщик заданий. Поставлена ​​задача выполнить powershell.exe с Аргументами: C:\userfolder\CPdownload.ps1 -RunType $true, - и Старт через: C:\userfolder. Запуск: только когда пользователь вошел в систему и имеет самые высокие привилегии; настроен для Windows Server 2012 R2.

Я также попытался запустить сценарий оболочки через пакетный файл из планировщика заданий с точно таким же результатом.

Заранее спасибо за любые указатели.


person Elena    schedule 14.12.2016    source источник


Ответы (2)


Вероятно, вашу задачу нужно запустить в интерактивном режиме. По умолчанию запланированные задачи запускаются в сеансе 0. Вы можете запланировать задачу для интерактивного режима с параметром /IT. Проверьте следующую ссылку для получения дополнительной информации

https://msdn.microsoft.com/en-us/library/bb736357(VS.85).aspx

person cezarypiatek    schedule 14.12.2016
comment
Спасибо, что спасли мой рассудок! Это /ОНО сделало это! - person Elena; 15.12.2016

Старый пост, однако, помимо изменения сценария в интерактивном режиме (это исправляет его), вы можете изменить политику выполнения Powershell на неограниченную (Set-ExecutionPolicy -ExecutionPolicy Unrestricted), если хотите запустить сценарий вне интерактивного режима. Просто подумал, что опубликую, так как недавно сам столкнулся с этим.

person Orest H    schedule 27.07.2020