Я хочу посмотреть папку с powershell, и я начинаю PS.Отменить регистрацию зарегистрированного события filewatcher не работает
Этот скрипт работает только один раз, когда я запускаю сценарий.
Но когда я должен перезапустить скрипт снова, потому что я изменил код сценария, я получаю сообщение об ошибке:
Cannot subscribe to the specified event. A subscriber with the source identifier 'FileChanged' already exists.
Я попытался:
это в верхней части сценария:
Unregister-Event -SourceIdentifier FileChanged
не работает.
Как правильно отменить регистрацию события, чтобы я мог запускать свой сценарий так часто, как хочу, и ранее зарегистрированное событие было удалено?
КОД
$folder = "C:\temp"
$Watcher = New-Object IO.FileSystemWatcher $folder -Property @{
IncludeSubdirectories = $true
NotifyFilter = [IO.NotifyFilters]'FileName, LastWrite'
}
$onChanged = Register-ObjectEvent $Watcher Changed -SourceIdentifier FileChanged -Action {
$path = $Event.SourceEventArgs.FullPath
$name = $Event.SourceEventArgs.Name
$changeType = $Event.SourceEventArgs.ChangeType
$timeStamp = $Event.TimeGenerated
Write-Host "The file '$name' was $changeType at $timeStamp"
Write-Host $path
#Move-Item $path -Destination $destination -Force -Verbose
}
Невозможно воспроизвести это на PowerShell v5 или v2. Не могли бы вы предоставить [mcve]? – PetSerAl
Этот скрипт запускался на сервере. Когда я запускаю скрипт локально, он отлично работает! – Elisabeth
Зачем вам отменять регистрацию, если вам нужно использовать его снова? Как только он будет находиться в памяти, он должен продолжать работать, пока сеанс PowerShell остается открытым. Не нужно повторять его. – Matt