BOX@Eelこの広告は、90日以上更新していないブログに表示しています。WindowsWindowsでUSBメモリなどを取り外す際にタスクトレイから行う「ハードウェアの安全な取り外し」の操作をコマンドプロンプトから実現しようとして、依然として失敗し続けている。備忘録として、時系列順に記録を残しておこうと思う。何か進展があったら追記するつもりだ。Workgroupで運用しているNASがある。このNASには、NTFSでフォーマットしたUSB-HDDが取り付けてある。USB-HDDは、Windowsバックアップツールを利用した定例バックアップ先として使用している。USB-HDDは、定例バックアップの時だけ接続している。バックアップ終了後には、取り外し可能な状態にした上で、USB-HDD本体の電源をOFFにしている。諸々の事情で、定例バックアップはWbadmin.exeを叩くパッチファイルをタスクスケジューラで実行することで実現している。定例バックアップ完了後に、毎回NASにログオンして「ハードウェアの安全な取り外し」の操作をするのが面倒である。同様の操作をパッチファイルから実行することで自動化したい。2016の標準の機能か、もしくはMicrosoftが公開しているツールなどで実現したい。サードパーティのツールは導入したくない。以上の理由より、コマンドプロンプト(正確にはパッチファイル)から標準/準標準の機能で「ハードウェアの安全な取り外し」と同等の処理を実現しようと試みているのだが、未だに成功する気配がない。今のところ得られている結果は「そもそもアンマウントすらできない」か「運用上問題となる副作用が発生する」のどちらかである。EjectPowerShellを使ってCD-ROMドライをイジェクトするネタがあるのだが、同じ方法でUSBデバイスもいけるという情報を得たので、試してみた。Shell.Application).Namespace(17).ParseName('F:').InvokeVerb('Eject')結果:アンマウントすらされない。Sysinternalsのsync.exe/sync64.exeのオプション-eでイジェクトできるとの情報を得たので、試してみた。F結果:アンマウントすらされない。使う標準コマンドmountvolのヘルプを見たところ、オプション/pにそれっぽい内容の記述があったので、試してみた。/p結果:ディスクがアンマウントされ、オフラインになる。その後にタスクトレイでの取り外し操作は必要だが、既にオフライン状態なので、直ぐに取り外し可能状態になる。問題点:この後ディスクの電源をONにした時、ドライブレターの割り当てが外れている。/p」でFドライブのUSB-HDDを取り外した場合、そのUSB-HDDを再度接続した時、ドライブレターが全く割り当てられない(なのでエクスプローラーの「デバイスとドライブ」からはUSB-HDDにアクセスできない)。オフラインにするPowerShellのSet-Diskでゴニョゴニョできる、という情報を得たので、試してみた。-IsOffline:$true結果:ディスクがアンマウントされ、オフラインになる。その後にタスクトレイでの取り外し操作は必要だが、既にオフライン状態なので、直ぐに取り外し可能状態になる。問題点:この後ディスクの電源をONにした時、ディスクがオフラインのままになる。Set-Diskを使うなどして明示的にオンライン状態にしないとUSB-HDDが使えない。久々のハードウェアネタである*1。月別アーカイブはてなブログをはじめよう!eel3さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。