当一个用户锁定或者解锁机器时,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 }