PowerShell 技能连载 - 订阅锁定和解锁事件

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