当一个用户锁定或者解锁机器时,Windows 会发出事件。PowerShell 可以订阅这些事件并且进行操作,例如使用文字转语音引擎来发出问候。
但是还有许多有用的操作。您也许希望在锁定计算机时做清理操作,关闭所有的 Windows 资源管理器窗口,开始备份,或做其它事情。以下是示例代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 function  Start-LogMessage   {  $null  = Register-ObjectEvent  -InputObject  ([Microsoft.Win32.SystemEvents ]) -SourceIdentifier  SessSwitch -EventName  "SessionSwitch"  -Action  {     Add-Type  -AssemblyName  System.Speech     $synthesizer  = New-Object  -TypeName  System.Speech.Synthesis.SpeechSynthesizer     switch ($event .SourceEventArgs.Reason) { 'SessionLock' { $synthesizer .Speak("Have a good one, $env:username !" ) } 'SessionUnlock' { $synthesizer .Speak("Heya, nice to see you $env:username  again!" ) }     }   } } function  Stop-LogMessage   {    $events  = Get-EventSubscriber  -SourceIdentifier  SessSwitch     $jobs  = $events  | Select-Object  -ExpandProperty  Action     $events  | Unregister-Event      $jobs  | Remove-Job  }