описание Я разработчик PHP/Linux, который должен использовать его для работы в среде Windows, поэтому я очень хорошо пропустил что-то принципиальное в вопросе , Я исследовал этот вопрос и не могу точно определить решение. Благодарим вас за помощь в продвижении.Powershell в пакетном файле, запущенном как проблема обслуживания
У меня есть командный файл, который вызывает сценарий powershell, который работает неправильно, когда он запускается планировщиком задач окна, но отлично работает, когда он запускается вручную.
Ниже приведен сценарий Powershell, что пакетный файл запуска ...
$WatchFolder = '\\networkshare\foldername'
$Filter = '*.csv'
$fsw = New-Object IO.FileSystemWatcher $WatchFolder, $Filter -Property @{IncludeSubdirectories = $false;NotifyFilter = [IO.NotifyFilters] 'LastWrite'}
Register-ObjectEvent $fsw Changed -SourceIdentifier SAS_Poll_FileChanged -Action {
$WatchFolder = '\\networkshare\foldername'
$OutputFolder_one = '\\networkshare\outputFolder_One'
$OutputFolder_two = '\\networkshare\outputFolder_Two'
$name = $Event.SourceEventArgs.Name
$lock_file = $WatchFolder + '\.' + $name + '.lock'
$test = (Test-Path "$lock_file")
if ($test){
return
} else {
Set-ExecutionPolicy -Scope CurrentUser Bypass
Out-File -FilePath "$lock_file"
Start-Process powershell -ArgumentList ".\General\PollingProcess-alone.ps1 $WatchFolder $MainFrameFolder $SASFolder $name $lock_file" -NoNewWindow
}
}
Я знаю, что проблема возникает в следующей строке ...
Start-Process powershell -ArgumentList ".\General\PollingProcess-alone.ps1 $WatchFolder $MainFrameFolder $SASFolder $name $lock_file" -NoNewWindow
Я знаю, что это б/с когда событие запускается (когда сценарий запускается через планировщик задач), создается файл блокировки, а затем зависает процесс.
Я поэтому думаю, что проблема связана с тем, что я запускаю второй скрипт powershell, но я не знаю, как это исправить. Я попытался использовать полный путь второго скрипта, но не смог заставить его работать.
Просто для того, чтобы дать вам более контекст сценария, важно, чтобы процесс события запустил новый скрипт powershell. B/c Мне нужны эти сценарии для запуска одновременно.
Изменение передачи параметров в массив было 1 из 2 вещей, которые я сделал не так со всем этим. Другой вопрос, который у меня был, это то, как я настраивал запланированную задачу. В действии запланированной задачи я удалил путь к скрипту, который я вызывал, и переместил путь к опции «Начать». Сочетание этих двух изменений, похоже, решило мою проблему. Еще раз спасибо за помощь. Хотел бы я взять кредит на большую часть этого кода, но это действительно дань уважения Powershell и насколько хорошо документирован язык. –