Как мне остановить powershell от просмотра файла в течение нескольких секунд? - PullRequest
0 голосов
/ 29 января 2019

Я пишу что-то в powershell, чтобы посмотреть файл 'A' на наличие изменений и открыть файл 'B', когда это произойдет.Единственная проблема заключается в том, что файл Excel (B) имеет код VBA для запуска при открытии, который должен скопировать данные в файл «А».Судя по моим исследованиям, мне кажется, что для этого мне нужно открыть файл «А», поскольку это должен быть файл .xlsx, и его открытие запускает непрерывный цикл.

Я пробовал команду сна, но, похоже,как будто он все еще просматривает файл во время или перед сном, а затем просто открывает файл снова, как только он ожидает, сколько времени я ему сообщу.

Как заставить наблюдателя перестать смотреть на минуту или около того?

Вот код, с которым я сейчас работаю:

    Function Register-Watcher {
    param ($folder)
    $filter = "*.xlsx"
    $folder = "\\powershell\watcher\test\folder"

    $watcher = New-Object IO.FileSystemWatcher $folder, $filter -Property @{ 
        IncludeSubdirectories = $false
        EnableRaisingEvents = $true


    }

    $changeAction = [scriptblock]::Create('

        $path = $Event.SourceEventArgs.FullPath
        $name = $Event.SourceEventArgs.Name
        $changeType = $Event.SourceEventArgs.ChangeType
        $timeStamp = $Event.TimeGenerated

        Write-Host "The file $name was $changeType at $timeStamp"

        $Excel = New-Object -ComObject Excel.Application
        $Excel.Workbooks.Open("\\powershell\watcher\test\folder\fileB.xlsm")
        sleep 60

    ')

    Register-ObjectEvent $Watcher "Changed" -Action $changeAction
}

 Register-Watcher "\\powershell\watcher\test\folder\fileA.xlsx"
 $Change

1 Ответ

0 голосов
/ 29 января 2019

Вы можете запретить ему вызывать события, используя

$watcher.EnableRaisingEvents = $false

Подробнее об этом можно прочитать здесь: Microsoft

https://docs.microsoft.com/en-us/dotnet/api/system.io.filesystemwatcher.enableraisingevents?view=netframework-4.7.2#System_IO_FileSystemWatcher_EnableRaisingEvents

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...