powershell - 我可以防止在 PowerShell 中创建的 Windows 事件观察程序随着服务器注销而消失吗?
问题描述
我设置了一个在服务器 1(安装了所需的应用程序,Windows Server 2008 R2)上运行的事件观察程序,以检测服务器 2(存储共享文件的位置)上的文件创建事件。两者都在 UNC 路径上。我使用 RDC/RDP 登录到服务器 1,并在那里运行 PowerShell 来创建、注册和/或取消注册事件观察程序。
假设:通过阅读有关在计算机重新启动时持续存在的事件观察器操作,我推断无论我是否登录,此类事件都应该持续存在。
行为:在我的情况下,观察者的动作只在我注销之前执行,当我重新登录时,观察者消失了,或者我相信因为我在尝试取消订阅时收到此错误......
Get-EventSubscriber : Event subscription with identifier 'FileToProcess' does not exist.
目标:我希望$OnEvent
在创建文件时触发那些美妙的动作,无论如何. 更新:特别是当我注销时,我通常会注销。
设置:
$Monitor = New-Object System.IO.FileSystemWatcher
$Monitor.Path = $FolderToMonitor
$Monitor.IncludeSubdirectories = $true
$Monitor.Filter = '*.*'
$SourceIdentifier = "FileToProcess"
$OnEvent = {...run a program in Server 1, write a file to Server 2, etc...}
# Unregister:
Unregister-Event $SourceIdentifier
# Register:
Register-ObjectEvent $Monitor Created -SourceIdentifier $SourceIdentifier -Action $OnEvent
猜想:当我注销时,我并不是说断开连接。我注销,当我重新登录时,我得到一个全新的 Windows 会话。当我注销时,也许 Windows 没有在服务器上运行?但我已经阅读了几十篇关于事件观察者的文章,但没有人提到这很重要。有点重要。
后续行动:如果这是真正的问题,那么......
- 我知道无论是否登录,Windows 任务计划程序都可以运行任务。难道不能告诉某种事件观察者也这样做吗?
- 有什么方法可以在不退出 Windows 的情况下注销?
- 为什么其他人似乎都有持续的事件(甚至有时抱怨不管他们做什么不想要的事件仍然存在)?
谢谢!
解决方案
推荐阅读
- javascript - 在 VS Code 中将 V8 设置为 JavaScript 运行时(而不是 Node.js)
- c# - 如何等待所有任务完成
- python - Flask 博客文章扩展控件 - 如何控制文本格式、添加链接、图片等的能力
- pandas - 将 2 列合并为 1 列同名
- php - 在 PHP 中检查其他文件的值
- r - 将行显示为系数而非列变量的逻辑回归模型总结
- docker - 无法在 Windows 上的 docker 中运行节点项目
- python - 使用“next.link”对象处理 API 分页
- reactjs - 这个 reactjs setState 函数代码有什么问题?
- regex - 正则表达式 - 数据验证