可以在powershell中向自定义对象添加事件吗?

时间:2015-10-11 13:58:58

标签: powershell

我在powershell中创建了一个自定义对象。 此对象必须引发事件,但无法使用新事件CMDLET分配事件名称。 我厌倦了添加一个带有add-member cmdlet的事件,但是powershell返回的一个问题是"无法将事件分配给PSObject"。 还有另一种方法可以执行此操作吗? 提前致谢。 锗

2 个答案:

答案 0 :(得分:0)

-Edit,抱歉误读了这个问题。快速搜索并调高this answer

$o=New-Object PSObject -property @{"_val"=1}

Add-Member -MemberType ScriptMethod -Name "Sqrt" -Value {

 write-host "the square root of $($this._val) is $([Math]::Round([Math]::Sqrt($this._val),2))"
} -inputObject $o

Add-Member -MemberType ScriptProperty -Name 'val' -Value{ $this._val }  -SecondValue { $this._val=$args[0];$this.Sqrt() } -inputObject $o

答案 1 :(得分:0)

CmdLets Register-EngineEventNew-Event可以帮助您注册和解雇自己的活动:

使用New-Event,您必须指定

  • -SourceIdentifier:您自己的标识符

你应该指定

  • -Sender:发出事件的对象
  • -EventArguments:一系列参数
  • -MessageData:参数对象

以下是一个例子:

New-Event -SourceIdentifier "MyOwnEvent" -EventArguments "A Param"

Cmdlet Register-EngineEvent允许您的代码订阅Windows PowerShell引擎事件,但也允许订阅New-Event触发的事件。

$evt1 = Register-EngineEvent -SourceIdentifier "MyOwnEvent" -Action {[console]::Beep(500,500)}

所以现在你的对象可以有一个名为 Event1 note属性,其值为“MyOwnEvent”,一段代码可以用Register-EngineEvent注册到这个事件,对象可以使用New-Event激活此事件。