আমি বিলের পদ্ধতিকে পছন্দ করি তবে তিনি কীভাবে পাওয়ারশেলে ডাব্লুএমআই ইভেন্টের জন্য নিবন্ধন করবেন তা আপনাকে বলেন না, সুতরাং এটি কীভাবে করবেন তা এখানে।
আপনি যদি নিজের কোডটি কেবল তখনই বর্ণিত করতে চান যখন সিস্টেম পাওয়ার স্টেটের পরিবর্তন হবে, এখানে বর্ণিত হিসাবে এই কোডটি ব্যবহার করুন।
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()
}