半年ほど前からiPodシャッフルを使っている。
安くてコンパクトで気に入っているのだが、USBに繋いで充電したままPCをスリープさせてしまうと逆に放電されてしまう。
朝気づくと充電がスッカラカンという事をなんどかやらかして、何かしら対策しないといけないと思い立った。(繋いでいるPCのUSBに依存した現象なのかもしれないが・・・)
スリープイベントを拾ってiPodがつながっていたら警告、って事にすれば良さそうだ。
Get-PSDriveでドライブ情報を取ってきてiPodかどうかを判定すれば良い。
幸い、DescriptionにiPodの名前が入っている。
っと思ったのだが、どうにもこうにもこいつが不思議な動作をする。
Descriptionに名前が入っている時と入っていない時があるのだ。
接続の都度違うとかではなくて、Get-PSDriveを呼ぶ都度?(環境)に違ったりする。
結局法則性がつかめなかったのでGet-PSDriveは諦めて「win32_usbhub」を使うことにした。
イベント自体は以前も使っているので以下と同様にしてみた。
PowerShell: ◆スリープ(Sleep)解除イベントを拾う
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 | #requires -version 2.0 # # Sleep時にiPod接続の監視 # $iPodString = "Apple Mobile Device USB Driver" $identifier = "EnteringSuspend" $query = "Select * From Win32_PowerManagementEvent where EventType=4" Register-WmiEvent -query $query -sourceidentifier $identifier try{ While($true){ $newEvent = Wait-Event -SourceIdentifier $identifier if(gwmi win32_usbhub | ?{$_.name -eq $iPodString}){ $sam = New-Object -comObject SAPI.SpVoice $sam.Speak("i Pod is connecting." ) } Get-Event -SourceIdentifier $identifier | Remove-Event } } catch{ Write-Warning "以下のエラーが発生しました" $error[0] } finally{ #イベントを削除し購読をやめる Get-Event $identifier | Remove-Event Get-EventSubscriber -sourceidentifier $identifier | Unregister-Event } |
警告は音声を使ってみたが、ココらへんは好みに応じて変更すれば良いだろう。
基本的にはUSBメモリーの抜き忘れなどにも使えそうなので用途はありそうだ。
0 件のコメント:
コメントを投稿