У меня запущен скрипт Powershell на сервере, и я не могу найти причину, по которой он перестает работать. Буду признателен за любую помощь, оказанную / предложенную. Powershell планируется запускать (перезапускать) каждый день в 4:15. Раньше он работал нормально, но по какой-то причине у меня сейчас возникают проблемы:
1) Powershell ничего не записывает в файл журнала. Я использую действие ниже, чтобы зарегистрировать событие.
$action = { $path = $Event.SourceEventArgs.FullPath
$changeType = $Event.SourceEventArgs.ChangeType
$logline = "$(Get-Date), $changeType, $path"
Add-content "D:\tdp\bin\UpgradeOBJECT\logs\PowerShellLog.txt" -value $logline
}
2) Я добавил два мониторинга из одного скрипта Powershell, чтобы часть 1 снова использовалась при регистрации изменений в разных папках.
3) Powershell не запускаетсяпакетный файл больше. Раньше это тоже срабатывало. Без Powershell процесс работает нормально (поэтому, если я запусту следующие командные файлы, они дадут правильный результат).
$action2 = {
cmd.exe /c "D:\tdp\bin\UpgradeOBJECT\upgrade_PNL_OBJECT_680.bat"
cmd.exe /c "D:\tdp\bin\UpgradeOBJECT\upgrade_OBJECT_680.bat"
}
4) Я запускаю эту задачу из планировщика задач ежедневно. Это вызвало бы пакетный файл, который поместил бы сценарий PowerShell в фоновый режим.
@echo off
Taskkill /IM powershell.exe /F
%~dp0
powershell.exe -windowstyle hidden -file
D:\tdp\bin\UpgradeOBJECT\SS_DS_SCHEMA_UPGRADE.ps1
exit /b 1
5) Powershell отслеживает две разные директории. Он должен запускать пакетный файл из двух разных каталогов и регистрировать изменения в двух разных папках. Я не думаю, что это проблема с папками, но просто чтобы быть уверенным, кто-нибудь может подтвердить?
6) Полный код Powershell таков:
1) Я попытался запуститьСценарий Powershell, зашел в папку и добавил несколько файлов (создал файл .txt), удалил, переименовал и т. Д. Это не привело к записи в него файла журнала.
2) Верните старую версию PowerShell (показана ниже). Это также не сработало.
$watchSSDS = New-Object System.IO.FileSystemWatcher
$watchSSDS.Path = "Y:\LA\QA\Build_Archive\PRODUCT\PRODUCT 6.8.0\Servers"
$watchSSDS.Filter = "*.*"
$watchSSDS.IncludeSubdirectories = $false
$watchSSDS.EnableRaisingEvents = $true
$WatchSchema = New-Object System.IO.FileSystemWatcher
$WatchSchema.Path = "Y:\LA\QA\Builds\Build Area\OBJECT\PRODUCT 6.8.0\QA1\OBJECT"
$WatchSchema.Filter = "*.*"
$WatchSchema.IncludeSubdirectories = $false
$WatchSchema.EnableRaisingEvents = $true
$action = { $path = $Event.SourceEventArgs.FullPath
$changeType = $Event.SourceEventArgs.ChangeType
$logline = "$(Get-Date), $changeType, $path"
Add-content "D:\tdp\bin\UpgradeSS\logs\PowerShellLog.txt" -value $logline
}
$action2 = {
cmd.exe /c "D:\tdp\bin\UpgradeSS\upgrade_PNL_OBJECT_680.bat"
cmd.exe /c "D:\tdp\bin\UpgradeSS\upgrade_OBJECT_680.bat"
}
$action3 = {
cmd.exe /c "D:\tdp\bin\UpgradeSchema\full_schema_upgrade_OBJECT_680.bat"
cmd.exe /c "D:\tdp\bin\UpgradeSchema\full_schema_upgrade_PNL_OBJECT_680.bat"
}
$action4 = { $path = $Event.SourceEventArgs.FullPath
$changeType = $Event.SourceEventArgs.ChangeType
$logline = "$(Get-Date), $changeType, $path"
Add-content "D:\tdp\bin\UpgradeSchema\logs\PowerShellLogSchema.txt" -value $logline
}
Register-ObjectEvent $watchSSDS "Created" -Action $action2
Register-ObjectEvent $watchSSDS "Created" -Action $action
Register-ObjectEvent $watchSSDS "Changed" -Action $action
Register-ObjectEvent $watchSSDS "Deleted" -Action $action
Register-ObjectEvent $watchSSDS "Renamed" -Action $action
Register-ObjectEvent $WatchSchema "Created" -Action $action3
Register-ObjectEvent $WatchSchema "Changed" -Action $action3
Register-ObjectEvent $WatchSchema "Deleted" -Action $action3
Register-ObjectEvent $WatchSchema "Renamed" -Action $action3
Register-ObjectEvent $WatchSchema "Created" -Action $action4
Register-ObjectEvent $WatchSchema "Changed" -Action $action4
Register-ObjectEvent $WatchSchema "Deleted" -Action $action4
Register-ObjectEvent $WatchSchema "Renamed" -Action $action4
while ($true) {sleep 10}