मुझे बिल के दृष्टिकोण से प्यार है, लेकिन वह आपको नहीं बताता है कि पावरशेल में WMI इवेंट के लिए पंजीकरण कैसे करें, इसलिए यहां यह कैसे करना है।
यदि आप चाहते हैं कि आपका कोड केवल तभी ट्रिगर हो, जब सिस्टम पावर स्टेट परिवर्तित हो, तो यहाँ वर्णित है , इस कोड का उपयोग करें।
Register-WMIEvent -query "Select * From Win32_PowerManagementEvent" `
-sourceIdentifier "Power" `
-action {
#YourCodeHere
}
जब भी बिजली की स्थिति बदलती है, तो आप इस उपकरण को चालू करेंगे, चाहे आप डिवाइस को प्लग इन करें, या इसे अनप्लग करें। तो आप आगे रुक कर सवाल पूछने के लिए रुक सकते हैं:
मैं सत्ता पर हूं या नहीं?
सौभाग्य से हम डब्ल्यूएमआई क्लास के माध्यम से ऐसा कर सकते हैं BatteryStatus
, इसलिए यहां पूर्ण निर्माण है जिसका उपयोग मैं केवल एक ऑपरेशन चलाने के लिए करता हूं जब कोई पावर इवेंट बदलता है, और उसके बाद ही जब मैं पावर पर नहीं होता हूं।
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()
}