在 Powershell 中创建事件

Creating Events in Powershell

提问人:Liquyd 提问时间:4/3/2023 最后编辑:Mathias R. JessenLiquyd 更新时间:4/3/2023 访问量:39

问:

任务:

我正在编写一个脚本,按顺序对 AD 对象(用户帐户)进行更改:

  1. 更名
  2. 组添加
  3. 人口结构变化
  4. 已添加经理姓名
  5. 添加电子邮件地址

问题:

我想要一种方法,在确认上一个进程已发生后通知序列中的下一个进程开始。我能够编写的最好的解决方案是一个循环,它不断检查我正在进行更改的 DC 上的“版本”计数增量。我更愿意做的是对对象的属性进行更改,让版本计数增量触发我订阅的“更改”事件,然后触发序列中的下一个函数\任务开始。

我尝试在网上搜索各种方法来“观察”对象的属性变化,但我似乎找不到如何做到这一点。有人有什么好的起点吗?或关于如何将事件与没有事件类成员的 PowerShell 对象的属性更改结合使用的建议?这不适用于 GUI。只是一个基本脚本。

PowerShell 对象 Event-Handling 属性已更改

评论

0赞 postanote 4/3/2023
了解如何使用 PowerShell 作业。
0赞 jdweng 4/3/2023
Powershell 是用 c# 编写的,因此,如果在 powershell 下找不到信息,则始终可以转换 c# 示例。请参见 : learn-powershell.net/2013/02/08/...该链接引用了 Net Library。
0赞 Mathias R. Jessen 4/3/2023
为此,设置更改通知听起来像是极端的矫枉过正。为什么不编写一个简单的脚本来执行所有 5 个操作呢?为什么事件驱动很重要?
0赞 Scepticalist 4/3/2023
正如 Mathias 所说,没有必要按顺序进行这些更改。全部做。编写脚本来捕获任何错误,如果需要检查错误是否已更改,只需使用特定的域控制器,并确保使用 上的参数读取和写入该特定控制器。-ServerGet-AdUser / Set-AdUser
0赞 Liquyd 4/4/2023
我第一次尝试写剧本,我做了所有五件事,但它很臃肿。我最近重写了剧本,它的行为方式与Mathias&Scepticalist建议的方式非常相似。但是,我回想起我最初编写此脚本的尝试,因为它总是困扰着我,因为没有明显的方法来捕获任何属性的更改,尤其是对于没有事件的对象。因此,这个问题更多的是关于解决需要事件驱动过程的情况。在我写完这个问题之后,我通过 add-Type 研究了 C# 转换。是唯一的解决方案吗?

答: 暂无答案