代码之家  ›  专栏  ›  技术社区  ›  Kellen Stuart Alan

注销所有自定义对象事件

  •  1
  • Kellen Stuart Alan  · 技术社区  · 7 年前

    我想在所有这些代码之前运行一个命令来注销任何自定义 Register-ObjectEvent ; 一些命令类似于 Remove-Jobs * 对于对象事件。我想这样做,因为如果我尝试注册,它会抛出一个错误 $watcher Get-ObjectEvent 否则我不会问这个

    $folder = "C:\some\path\to\folder"
    
    # File it is watching
    $filter = "flag.txt"
    
    # Instantiate Watcher 
    $Watcher = New-Object IO.FileSystemWatcher $folder, $filter -Property @{ 
        IncludeSubdirectories = $false
        NotifyFilter = [IO.NotifyFilters]'FileName, LastWrite'
    }
    
    # EVENT: $filter is created
    $onCreated = Register-ObjectEvent $Watcher Created -SourceIdentifier FileCreated -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
    }
    
    2 回复  |  直到 7 年前
        1
  •  3
  •   Ansgar Wiechers    7 年前

    虽然可能没有 Get-ObjectEvent Get-EventSubscriber .

    Get-EventSubscriber | Unregister-Event
    

        2
  •  1
  •   Jonesome Reinstate Monica    3 年前

    我要做的是在Register ObjectEvent之前有一行:

    Unregister-Event -SourceIdentifier FileCreated -EA 0
    

    (给它起个活动名)

    EA 0抑制抛出的任何错误。