我是 PS 新手,想了解 $sender 变量是什么以及它是如何工作的。我之前在函数中使用过 $this ,这非常简单。然而,我一生都无法理解 $sender 的作用或它在传递给函数时的行为方式。我尝试了广泛的搜索,但找不到任何其使用的示例。我希望有人能用外行人的术语解释 $sender 是什么,并提供传递给函数的示例。
$sender
是什么。它是一个自动变量,会自动填充到 Register-ObjectEvent
或 Register-EngineEvent
的 Action 块上下文中,并表示生成事件的实例。
DataAdded
事件,$sender
将是 PSDataCollection<T>
的实例:
try {
$collection = [System.Management.Automation.PSDataCollection[int]]::new()
$evt = Register-ObjectEvent -InputObject $collection -EventName DataAdded -Action {
"`$sender is of type: '$($sender.GetType())'",
"Last item added was: '$($sender[-1])'" | Out-Host
}
Start-Sleep 1
$collection.Add(1)
# On Addition you would see:
#
# $sender is of type: 'System.Management.Automation.PSDataCollection[int]'
# Last item added was: '1'
}
finally {
Unregister-Event $evt.Name
}
在
Register-EngineEvent
的情况下,我们可以根据需要自定义它,在本示例中,我们可以将字符串发送到操作块:
try {
$evt = Register-EngineEvent -SourceIdentifier MyCustomEvent -Action {
"`$sender is of type: '$($sender.GetType())'" | Out-Host
}
Start-Sleep 1
$null = New-Event -SourceIdentifier MyCustomEvent -Sender 'hi!'
# After generating this event we would see that the sender is a `string`
}
finally {
Unregister-Event $evt.Name
}