Bill'in yaklaşımını seviyorum, ancak PowerShell'de bir WMI Etkinliğine nasıl kaydolacağınızı söylemiyor, bu yüzden bunu nasıl yapacağınız burada.
Kodunuzun yalnızca burada açıklandığı gibi Sistem Güç Durumu değiştiğinde tetiklenmesini istiyorsanız , bu kodu kullanın.
Register-WMIEvent -query "Select * From Win32_PowerManagementEvent" `
-sourceIdentifier "Power" `
-action {
#YourCodeHere
}
Şimdi, güç fişi her değiştiğinde, cihazı fişe takıp takmadığınızdan veya fişten çektiğinizde tetiklenir. Bu nedenle, soruyu sormak için durup duraklatabilirsiniz:
İktidarda değil miyim?
Neyse ki, bunu WMI Sınıfı üzerinden yapabiliriz BatteryStatus
, bu yüzden SADECE bir güç olayı değiştiğinde bir işlemi çalıştırmak için kullandığım tam yapı ve daha sonra sadece artık Güçte değilsem.
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()
}