PowerShell неправильно контролирует каталог - PullRequest
1 голос
/ 30 сентября 2019

У меня запущен скрипт 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}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...