Register-CimIndicationEvent

使用筛选器表达式或查询表达式订阅指示。

语法

Register-CimIndicationEvent
        [-Namespace <String>]
        [-ClassName] <String>
        [-OperationTimeoutSec <UInt32>]
        [-ComputerName <String>]
        [[-SourceIdentifier] <String>]
        [[-Action] <ScriptBlock>]
        [-MessageData <PSObject>]
        [-SupportEvent]
        [-Forward]
        [-MaxTriggerCount <Int32>]
        [<CommonParameters>]
Register-CimIndicationEvent
        [-Namespace <String>]
        [-ClassName] <String>
        [-OperationTimeoutSec <UInt32>]
        -CimSession <CimSession>
        [[-SourceIdentifier] <String>]
        [[-Action] <ScriptBlock>]
        [-MessageData <PSObject>]
        [-SupportEvent]
        [-Forward]
        [-MaxTriggerCount <Int32>]
        [<CommonParameters>]
Register-CimIndicationEvent
        [-Namespace <String>]
        [-Query] <String>
        [-QueryDialect <String>]
        [-OperationTimeoutSec <UInt32>]
        -CimSession <CimSession>
        [[-SourceIdentifier] <String>]
        [[-Action] <ScriptBlock>]
        [-MessageData <PSObject>]
        [-SupportEvent]
        [-Forward]
        [-MaxTriggerCount <Int32>]
        [<CommonParameters>]
Register-CimIndicationEvent
        [-Namespace <String>]
        [-Query] <String>
        [-QueryDialect <String>]
        [-OperationTimeoutSec <UInt32>]
        [-ComputerName <String>]
        [[-SourceIdentifier] <String>]
        [[-Action] <ScriptBlock>]
        [-MessageData <PSObject>]
        [-SupportEvent]
        [-Forward]
        [-MaxTriggerCount <Int32>]
        [<CommonParameters>]

说明

此 cmdlet 仅在 Windows 平台上可用。

Register-CimIndicationEvent cmdlet 使用指示类名或查询表达式订阅指示。 使用 SourceIdentifier 参数为订阅命名。

此 cmdlet 返回 EventSubscription 对象。 可以使用此对象取消订阅。

示例

示例 1:注册类生成的事件

此示例会订阅由名为 Win32_ProcessStartTrace 的类生成的事件。 只要进程启动,此类就会引发一个事件。

Register-CimIndicationEvent -ClassName 'Win32_ProcessStartTrace' -SourceIdentifier "ProcessStarted"
Get-Event -SourceIdentifier "ProcessStarted"

Get-Event cmdlet 获取具有 ProcessStarted 订阅的事件。 有关详细信息,请参阅 Get-Event

注意

对于此示例,必须以管理员身份运行 PowerShell。

示例 2:使用查询注册事件

此示例使用查询来订阅每当名为 Win32_LocalTime 的类的实例发生更改时都会生成的事件。

$query = "SELECT * FROM CIM_InstModification WHERE TargetInstance ISA 'Win32_LocalTime'"
Register-CimIndicationEvent -Query $query -SourceIdentifier "Timer"

示例 3:事件到达时运行脚本

此示例说明如何使用操作来响应事件。 变量 $action 保存 Action 的脚本块,该脚本块使用 $event 变量来访问从 CIM 接收的事件。

$action = {
  $name = $event.SourceEventArgs.NewEvent.ProcessName
  $id = $event.SourceEventArgs.NewEvent.ProcessId
  Write-Host -Object "New Process Started : Name = $name
 ID = $id"
}
Register-CimIndicationEvent -ClassName 'Win32_ProcessStartTrace' -SourceIdentifier "ProcessStarted" -Action $action

有关详细信息,请参阅 Win32_ProcessStartTrace

示例 4:在远程计算机上注册事件

本示例订阅名为 Server01 的远程计算机上的事件。 从 CIM 服务器接收的事件存储在当前 PowerShell 会话的事件队列中以后,运行本地 Get-Event 来检索事件。

Register-CimIndicationEvent -ClassName 'Win32_ProcessStartTrace' -SourceIdentifier "ProcessStarted" -ComputerName Server01
Get-Event -SourceIdentifier "ProcessStarted"

参数

-Action

指定用于处理事件的命令。 引发某个事件后,系统会运行此参数指定的命令,而不会将该事件发送到事件队列。 将命令括在大括号 ({}) 中以创建脚本块。

通过 Action 指定的脚本块可以包含 $Event$EventSubscriber$Sender$SourceEventArgs$SourceArgs 自动变量,这些变量向 Action 脚本块提供有关事件的信息。 有关详细信息,请参阅关于自动变量

类型:ScriptBlock
Position:1
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-CimSession

使用指定的 CIM 会话运行命令。 输入一个包含 CIM 会话的变量,或输入一个用于创建或获取 CIM 会话的命令,例如 New-CimSessionGet-CimSession cmdlet。 有关详细信息,请参阅 about_CimSession

类型:CimSession
Position:Named
默认值:None
必需:True
接受管道输入:False
接受通配符:False

-ClassName

指定要订阅的指示类。 可以使用 Tab 完成浏览类列表,因为 PowerShell 从本地 WMI 服务器获取类列表以提供类名列表。

类型:String
Position:0
默认值:None
必需:True
接受管道输入:False
接受通配符:False

-ComputerName

指定要在其中运行 CIM 操作的计算机的名称。 可以指定完全限定的域名 (FQDN)、NetBIOS 名称或 IP 地址。

如果指定此参数,cmdlet 将使用 WSMan 协议创建到指定计算机的临时会话。 如果未指定此参数,cmdlet 将使用组件对象模型 (COM) 在本地系统上执行该操作。

如果要在同一台计算机上执行多个操作,则使用 CIM 会话进行连接以改善性能。

类型:String
别名:CN, ServerName
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-Forward

指示将订阅的事件转发到本地计算机上的会话。 如果要在远程计算机或远程会话中注册事件,可使用此参数。

类型:SwitchParameter
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-MaxTriggerCount

此参数指示在触发指定次数后,应自动将订阅者取消注册。 如果值等于或小于零,则在没有取消注册的情况下,可触发事件的次数没有限制。

类型:Int32
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-MessageData

指定将与此事件订阅关联的任何额外数据。 此参数的值出现在与此订阅关联的所有事件的 MessageData 属性中。

类型:PSObject
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-Namespace

指定 CIM 操作的命名空间。 默认命名空间为 root/cimv2。 可以使用 Tab 完成浏览命名空间列表,因为 PowerShell 从本地 WMI 服务器获取命名空间列表以提供命名空间列表。

类型:String
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-OperationTimeoutSec

指定 cmdlet 等待计算机响应的时间量。 默认情况下,此参数的值为 0,这意味着 cmdlet 使用服务器的默认超时值。

如果 OperationTimeoutSec 参数设置为小于可靠连接重试超时 3 分钟的值,则超过 OperationTimeoutSec 参数的值的网络故障不可恢复,因为服务器上的操作在客户端重新连接之前超时。

类型:UInt32
别名:OT
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-Query

指定要在 CIM 服务器上运行的查询。 如果指定的值包含双引号 "、单引号 ' 或反斜杠 \,必须通过在这些字符前添加反斜杠字符来将这些字符转义。 如果指定的值使用 WQL LIKE 运算符,则必须将以下字符括在方括号 ([]) 中来对它们进行转义:百分号 %、下划线 _ 或左方括号 [

类型:String
Position:0
默认值:None
必需:True
接受管道输入:False
接受通配符:False

-QueryDialect

指定用于 Query 参数的查询语言。 此参数可接受的值为:WQLCQL。 默认值为 WQL。

类型:String
Position:Named
默认值:WQL
必需:False
接受管道输入:False
接受通配符:False

-SourceIdentifier

指定订阅的名称。 所指定的名称必须在当前会话中独一无二。 默认值为 PowerShell 分配的 GUID。 此值出现在订阅者对象以及与此订阅关联的所有事件对象的 SourceIdentifier 属性值中。

类型:String
Position:1
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-SupportEvent

指示事件订阅已隐藏。 在当前订阅是更复杂的事件注册机制的一部分并且不应单独发现时,可使用此参数。

类型:SwitchParameter
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

输入

None

不能通过管道将对象传递给此 cmdlet。

输出

Object

此 cmdlet 返回 EventSubscription 对象。

备注

PowerShell 包含以下 Register-CimIndicationEvent 别名:

  • Windows:
    • rcie

此 cmdlet 仅在 Windows 平台上可用。