Saya suka pendekatan Bill, tetapi dia tidak memberi tahu Anda cara mendaftar untuk Acara WMI di PowerShell, jadi inilah cara melakukannya.
Jika Anda ingin kode Anda memicu hanya ketika Status Daya Sistem berubah, seperti dijelaskan di sini , gunakan kode ini.
Register-WMIEvent -query "Select * From Win32_PowerManagementEvent" `
-sourceIdentifier "Power" `
-action {
#YourCodeHere
}
Sekarang, ini akan memicu kapan pun status daya berubah, apakah Anda mencolokkan perangkat, atau mencabutnya. Jadi, Anda mungkin ingin berhenti dan berhenti sejenak untuk mengajukan pertanyaan:
Apakah saya berkuasa atau tidak?
Untungnya kita dapat melakukannya melalui Kelas WMI BatteryStatus
, jadi inilah konstruksi lengkap yang saya gunakan untuk HANYA menjalankan operasi ketika peristiwa daya berubah, dan hanya jika saya tidak lagi menggunakan Daya.
Register-WMIEvent -query "Select * From Win32_PowerManagementEvent" `
-sourceIdentifier "Power" `
-action {
if ([BOOL](Get-WmiObject -Class BatteryStatus -Namespace root\wmi).PowerOnLine ){
#Device is plugged in now, do this action
write-host "Power on!"
}
else{
#Device is NOT plugged in now, do this action
write-host "Now on battery, locking..."
[NativeMethods]::LockWorkStation()
}