Так I've получил сценарий Powershell, который проверяет, если папка была создана в определенном каталоге, а затем делает вещи с этой папкойPowershell скрипт запускается планировщик заданий не работает
Код:
echo "$(Get-Date -Format g) - Script started" >> C:\bitlocker.log
$folder = 'C:\Path\To\Check'
$filter = '*.*'
$fsw = New-Object IO.FileSystemWatcher $folder, $filter
$fsw.IncludeSubdirectories = $false
$fsw.NotifyFilter = [IO.NotifyFilters]'DirectoryName'
$onCreated = Register-ObjectEvent $fsw Created -SourceIdentifier FileCreated -Action {
$folderNow = $($EventArgs.FullPath)
<do stuff now>
}
Запуск этого сценария вручную отлично работает, но запуск его с помощью Планировщика заданий не работает.
Сначала я попытался запустить скрипт напрямую, что показывает, что скрипт был успешно запущен, но ничего не происходит -Action { ... }
выполняется.
Затем я попытался сделать партию, которая запускает скрипт PowerShell, который запускается с помощью Task (как предложено здесь How to run a PowerShell script from a batch file)
PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Start-Process PowerShell -ArgumentList '-NoProfile -ExecutionPolicy Bypass -File ""C:\PathtoScript\Script.ps1""' -Verb RunAs}"
, но проблема остается тем же самым.
Сценарий запускается (написал некоторый вывод в файл, чтобы проверить это), но ничего внутри -Action { ... }
не выполняется.
Edit: Task Schedular установлен, чтобы запустить сценарий как пользователь с правами администратора, поскольку действия, которые не работают нужны те, запись в C: \ отлично работает
Запись в корень C: диск требует повышенных привилегий. Задана ли задача запускать только при входе пользователя в систему? Если нет, то вам нужно установить учетные данные в задаче, и если папка, которую вы проверяете, является сетевым диском, вам необходимо использовать UNC-путь. – Squashman
Забыл добавить это: Task Schedular установлен для запуска скрипта как пользователя с правами администратора, поскольку действия, которые не работают, нуждаются в них, запись в C: \ работает отлично. –
Знаете ли вы, что 'FileSystemWatcher' умирает с процессом, в котором он был создан? – PetSerAl