以前あげた記事で、(New-Object -ComObject Shell.Application).NameSpace(17)がマイコンピュータであると書きました。
PowerShellでCD ROMドライブのエジェクトをしたい
なぜNameSpace(17)がマイコンピュータと判断出来るのか、インデックスと名称一覧を取得出来る簡単なワンライナーを書きました。 ====
Shell.ApplicationのNameSpace()のインデックスと名称を取得する
以下のワンライナーで取得できます。
0..61 | ForEach-Object { "{0,3} ,$(((New-Object -ComObject Shell.Application).NameSpace($_)).Title)" -F $_ }
Windows8 x64 / PowerShell V3.0環境での一覧を示しておきます。
0 ,デスクトップ 1 ,インターネット 2 ,プログラム 3 ,すべてのコントロール パネル項目 4 ,プリンター 5 ,マイ ドキュメント 6 ,お気に入り 7 ,スタートアップ 8 ,最近使った項目 9 ,SendTo 10 ,ごみ箱 11 ,スタート メニュー 12 , 13 ,マイ ミュージック 14 ,マイ ビデオ 15 , 16 ,デスクトップ 17 ,コンピューター 18 ,ネットワーク 19 ,Network Shortcuts 20 ,Fonts 21 ,Templates 22 ,スタート メニュー 23 ,プログラム 24 ,スタートアップ 25 ,パブリック デスクトップ 26 ,Roaming 27 ,Printer Shortcuts 28 ,Local 29 ,スタートアップ 30 ,スタートアップ 31 ,お気に入り 32 ,Temporary Internet Files 33 ,Cookies 34 ,History 35 ,ProgramData 36 ,Windows 37 ,System32 38 ,Program Files 39 ,マイ ピクチャ 40 ,acquire 41 ,SysWOW64 42 ,Program Files (x86) 43 ,Common Files 44 ,Common Files 45 ,Templates 46 ,パブリックのドキュメント 47 ,管理ツール 48 ,管理ツール 49 ,ネットワーク接続 50 , 51 , 52 , 53 ,パブリックのミュージック 54 ,パブリックのピクチャ 55 ,パブリックのビデオ 56 ,Resources 57 , 58 ,OEM Links 59 ,一時書き込みフォルダー 60 , 61 ,ネットワーク
この通り、0~61のインデックスに各項目が含まれています。 CD ROMはComputer (日本語環境では、コンピューター)に含まれるので…17ですね!! 他のNew-Object -ComObject Shell.Applicationからアクセスする要素もコレで判断がつくかと思います。