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()
}