У меня есть файл .bat следующим образом:
@echo off
Taskkill /IM powershell.exe /F
REM Taskkill /IM cmd.exe /F
TIMEOUT /T 2
powershell.exe -windowstyle hidden -file D:\tdp\bin\Upgrade\Services_UPGRADE.ps1
exit /b 1
Это должно запустить файл .Ps, что он делает, и все задачи выполняются правильно. Файл .Ps имеет следующие строки:
Set-Location D:\tdp\bin\UpgradeSIGMA
### SET FOLDER TO WATCH + FILES TO WATCH + SUBFOLDERS YES/NO
$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = "X:\HF\QA\Build_Archive\Servers\"
$watcher.Filter = "*.*"
$watcher.IncludeSubdirectories = $false
$watcher.EnableRaisingEvents = $true
### Monitor the folder to see if any updates are done.
$action = { $path = $Event.SourceEventArgs.FullPath
$changeType = $Event.SourceEventArgs.ChangeType
$logline = "$(Get-Date), $changeType, $path"
Add-content "D:\tdp\bin\UpgradeSIGMA\logs\PowerShellLog.log" -value $logline
}
$action2 = {
cmd.exe /c "D:\tdp\bin\Upgrade\upgrade_700.bat"
}
### Logs the change in a log file specified in action procedure
Register-ObjectEvent $watcher "Created" -Action $action
Register-ObjectEvent $watcher "Changed" -Action $action
Register-ObjectEvent $watcher "Deleted" -Action $action
Register-ObjectEvent $watcher "Renamed" -Action $action
### DECIDE WHICH EVENTS SHOULD BE WATCHED
Register-ObjectEvent $watcher "Created" -Action $action2
while ($true) {sleep 10}
. Это сценарий мониторинга. Он выполняет свою работу, если я запускаю командный файл вручную, и продолжает выполнять эту работу, например, если он уничтожен или сервер перезапущен.
Что я хочу сделать, это вставить задачу планировщика задач basi c, которая будет запускать файл / bat, чтобы эта задача выполнялась постоянно, чтобы в случае перезапуска сервера я не не забудьте запустить эту задачу, тогда задача будет запущена сама.
Как только я создаю планировщик задач и запускаю его, я вижу, что сеанс .Ps изменился, и новый сеанс начался. Хотя, когда создаются новые сервисы, это не происходит, как если бы я запускал файл вручную из файла bat.
Сейчас я попробовал несколько вещей:
- Планирование задачи с и без наивысших привилегий.
- Выбрал параметр «Только для запуска», когда пользователь вошел в систему и запускать ли пользователь вошел в систему или нет.
- установить путь к программе / скрипту к файлу .bat без аргументов.
- Установите начало в пути к папке, в то время как Программа / Сценарий имеет только упомянутое имя пакетного файла и путь.
- Добавлена Программа / Сценарий как: "C: \ Windows \ system32 \ cmd.exe ", аргумент как" / c ss_ds_background.bat "и запуск как" D: \ tdp \ bin \ Upgrade \ "
Все эти случаи привели к тому же результату, что .Ps запускались (из диспетчера задач я мог видеть новую сессию), но он никогда не проходил мимо этого и никогда не обнаруживал новые случаи. Это заставляет меня думать, что это проблема с while l oop в .ps.
Есть совет?