PowerShellを利用した特殊フォルダの指定方法の紹介をします。検証デバイスのOSは、Windows11です。VBAでの特殊フォルダ指定方法については、以下ページを参照ください。

Shellコマンドによる特殊フォルダ指定
Shellコマンドによる特殊フォルダの指定方法を紹介します。VBAと同様、Shell.Applicationクラス内のNamespaceメソッドを使用し、引数にパラメータかIndex値を指定します。
Example
パラメータを指定してディレクトリパスを出力します。
$shell = New-Object -ComObject Shell.Application
$shell.NameSpace("shell:Startup").Self.PathIndexを指定してディレクトリパスを出力します。
$shell = New-Object -ComObject Shell.Application
$shell.NameSpace(29).Self.PathIndex値が割り当てられているshellコマンドで指定可能な特殊フォルダ一覧をターミナルに出力するコードになります。0番から61番までの間に断続的に割り当てられています。62番から255番までは特に割り当てはなく、256番からまた0番と同じ割り当てが開始されます。
$shell = New-Object -ComObject Shell.Application
$i = 0
while ($i -le 61) {
$ShellName = $shell.NameSpace($i)
$Joinstr = -join($i,",",$ShellName.Self.GetFolder.Self.Name,",",$ShellName.Self.GetFolder.Self.Path)
echo $Joinstr
$i +=1
}パラメータ一覧
| パラメータ | Index | フォルダ名 | ディレクトリパス |
|---|---|---|---|
| shell:Desktop | 0 | デスクトップ | C:\Users\<ユーザ名>\Desktop |
| shell:InternetFolder | 1 | インターネット | ::{871C5380-42A0-1069-A2EA-08002B30309D} |
| shell:Programs | 2 | プログラム | C:\Users\<ユーザ名>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs |
| shell:ControlPanelFolder | 3 | すべてのコントロール パネル項目 | ::{26EE0668-A00A-44D7-9371-BEB064C98683}\0 |
| shell:PrintersFolder | 4 | プリンター | ::{21EC2020-3AEA-1069-A2DD-08002B30309D}\::{2227A280-3AEA-1069-A2DE-08002B30309D} |
| shell:Personal | 5 | ドキュメント | C:\Users\<ユーザ名>\Documents |
| shell:Favorites | 6 | お気に入り | C:\Users\<ユーザ名>\Favorites |
| shell:Common Startup | 7 | スタートアップ | C:\Users\<ユーザ名>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup |
| shell:Recent | 8 | 最近使った項目 | C:\Users\<ユーザ名>\AppData\Roaming\Microsoft\Windows\Recent |
| shell:SendTo | 9 | SendTo | C:\Users\<ユーザ名>\AppData\Roaming\Microsoft\Windows\SendTo |
| shell:RecycleBinFolder | 10 | ごみ箱 | ::{645FF040-5081-101B-9F08-00AA002F954E} |
| shell:Start Menu | 11 | スタート メニュー | C:\Users\<ユーザ名>\AppData\Roaming\Microsoft\Windows\Start Menu |
| 12 | |||
| shell:Local Music | 13 | ミュージック | C:\Users\<ユーザ名>\Music |
| shell:Local Videos | 14 | ビデオ | C:\Users\<ユーザ名>\Videos |
| 15 | |||
| shell:Desktop | 16 | デスクトップ | C:\Users\<ユーザ名>\Desktop |
| shell:MyComputerFolder | 17 | PC | ::{20D04FE0-3AEA-1069-A2D8-08002B30309D} |
| shell:NetworkPlacesFolder | 18 | ネットワーク | ::{F02C1A0D-BE21-4350-88B0-7367FC96EF3C} |
| shell:NetHood | 19 | Network Shortcuts | C:\Users\<ユーザ名>\AppData\Roaming\Microsoft\Windows\Network Shortcuts |
| shell:Fonts | 20 | Fonts | C:\Windows\Fonts |
| shell:Templates | 21 | Templates | C:\Users\<ユーザ名>\AppData\Roaming\Microsoft\Windows\Templates |
| shell:Common Start Menu | 22 | スタート メニュー | C:\ProgramData\Microsoft\Windows\Start Menu |
| shell:Common Programs | 23 | プログラム | C:\ProgramData\Microsoft\Windows\Start Menu\Programs |
| shell:Common Startup | 24 | スタートアップ | C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp |
| shell:Common Desktop | 25 | パブリック デスクトップ | C:\Users\Public\Desktop |
| shell:AppData | 26 | Roaming | C:\Users\<ユーザ名>\AppData\Roaming |
| shell:PrintHood | 27 | Printer Shortcuts | C:\Users\<ユーザ名>\AppData\Roaming\Microsoft\Windows\Printer Shortcuts |
| shell:Local AppData | 28 | Local | C:\Users\<ユーザ名>\AppData\Local |
| shell:Startup | 29 | スタートアップ | C:\Users\<ユーザ名>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup |
| shell:Common Startup | 30 | スタートアップ | C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp |
| shell:Favorites | 31 | お気に入り | C:\Users\<ユーザ名>\Favorites |
| shell:Cache | 32 | INetCache | C:\Users\<ユーザ名>\AppData\Local\Microsoft\Windows\INetCache |
| shell:Cookies | 33 | INetCookies | C:\Users\<ユーザ名>\AppData\Local\Microsoft\Windows\INetCookies |
| shell:History | 34 | History | C:\Users\<ユーザ名>\AppData\Local\Microsoft\Windows\History |
| shell:Common AppData | 35 | ProgramData | C:\ProgramData |
| shell:Windows | 36 | Windows | C:\Windows |
| shell:System | 37 | System32 | C:\Windows\System32 |
| shell:ProgramFiles | 38 | Program Files | C:\Program Files |
| shell:Local Pictures | 39 | ピクチャ | C:\Users\<ユーザ名>\Pictures |
| shell:Profile | 40 | <ユーザ名> | C:\Users\<ユーザ名> |
| shell:SystemX86 | 41 | SysWOW64 | C:\Windows\SysWOW64 |
| shell:ProgramFilesX86 | 42 | Program Files (x86) | C:\Program Files (x86) |
| shell:ProgramFilesCommon | 43 | Common Files | C:\Program Files\Common Files |
| shell:ProgramFilesCommonX86 | 44 | Common Files | C:\Program Files (x86)\Common Files |
| shell:Common Templates | 45 | Templates | C:\ProgramData\Microsoft\Windows\Templates |
| shell:Common Documents | 46 | パブリックのドキュメント | C:\Users\Public\Documents |
| shell:Common Administrative Tools | 47 | Windows 管理ツール | C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools |
| shell:Administrative Tools | 48 | Windows 管理ツール | C:\Users\<ユーザ名>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Administrative Tools |
| shell:ConnectionsFolder | 49 | ネットワーク接続 | ::{21EC2020-3AEA-1069-A2DD-08002B30309D}\::{7007ACC7-3202-11D1-AAD2-00805FC1270E} |
| 50 | |||
| 51 | |||
| 52 | |||
| shell:CommonMusic | 53 | パブリックのミュージック | C:\Users\Public\Music |
| shell:CommonPictures | 54 | パブリックのピクチャ | C:\Users\Public\Pictures |
| shell:CommonVideo | 55 | パブリックのビデオ | C:\Users\Public\Videos |
| shell:ResourceDir | 56 | Resources | C:\Windows\Resources |
| 57 | |||
| shell:OEM Links | 58 | OEM Links | C:\ProgramData\OEM Links |
| shell:CD Burning | 59 | 一時書き込みフォルダー | C:\Users\<ユーザ名>\AppData\Local\Microsoft\Windows\Burn\Burn |
| 60 | |||
| shell:NetworkPlacesFolder | 61 | ネットワーク | ::{F02C1A0D-BE21-4350-88B0-7367FC96EF3C} |
| ・ | |||
| 255 |
WSHによる指定
Wscript.shellクラスのをSpecialFoldersを利用した特殊フォルダの指定方法です。引数は、Index(数値)か、パラメータ(文字列)を指定します。Indexとパラメータは以下のパラメータ一覧を参照ください。
Example
パラメータを指定してディレクトリパスを出力します。
$shell=New-Object -ComObject Wscript.shell
$shell.SpecialFolders.Item("Desktop")Index指定を指定してディレクトリパスを出力します。
$shell=New-Object -ComObject Wscript.shell
$shell.SpecialFolders.Item(4)WSHで指定できるIndexは0から17までとなります。Index値とディレクトリパスをターミナルに出力するコードを紹介します。
$shell=New-Object -ComObject Wscript.shell
$i = 0
while ($i -le 17) {
$WSH = $shell.SpecialFolders.Item($i)
$Joinstr = -join($i,",",$WSH)
echo $Joinstr
$i +=1
}パラメータ一覧
| パラメータ | Index | フォルダ名 | ディレクトリパス |
|---|---|---|---|
| AllUsersDesktop | 0 | 全ユーザー共通のデスクトップ | C:\Users\Public\Desktop |
| AllUsersStartMenu | 1 | 全ユーザー共通のプログラムメニュー | C:\ProgramData\Microsoft\Windows\Start Menu |
| AllUsersPrograms | 2 | 全ユーザー共通のプログラム | C:\ProgramData\Microsoft\Windows\Start Menu\Programs |
| AllUsersStartup | 3 | 全ユーザー共通のスタートアップ | C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp |
| Desktop | 4 | デスクトップ | C:\Users\<ユーザー名>\Desktop |
| AppData | 5 | AppData\Roamingフォルダ | C:\Users\<ユーザー名>\AppData\Roaming |
| PrintHood | 6 | プリンタショートカットフォルダ | C:\Users\<ユーザー名>\AppData\Roaming\Microsoft\Windows\Printer Shortcuts |
| Templates | 7 | Templatesフォルダ | C:\Users\<ユーザー名>\AppData\Roaming\Microsoft\Windows\Templates |
| Fonts | 8 | フォントフォルダ | C:\Windows\Fonts |
| NetHood | 9 | Network Shortcutsフォルダ | C:\Users\<ユーザー名>\AppData\Roaming\Microsoft\Windows\Network Shortcuts |
| Desktop | 10 | デスクトップ | C:\Users\<ユーザー名>\Desktop |
| StartMenu | 11 | スタートメニュー | C:\Users\<ユーザー名>\AppData\Roaming\Microsoft\Windows\Start Menu |
| SendTo | 12 | SendToフォルダ | C:\Users\<ユーザー名>\AppData\Roaming\Microsoft\Windows\SendTo |
| Recent | 13 | 最近使った項目 | C:\Users\<ユーザー名>\AppData\Roaming\Microsoft\Windows\Recent |
| Startup | 14 | スタートアップフォルダ | C:\Users\<ユーザー名>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup |
| Favorites | 15 | お気に入り | C:\Users\<ユーザー名>\Favorites |
| MyDocuments | 16 | マイドキュメント | C:\Users\<ユーザー名>\Documents |
| Programs | 17 | プログラムメニュー | C:\Users\<ユーザー名>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs |
Environmentプロバイダーによる特殊フォルダ指定
PowerShellで環境変数を取得する場合、Environmentプロバイダーを利用します。環境変数の中でも特殊フォルダ指定できる項目があるため、特殊フォルダ指定の一例として紹介します。パラメータを指定して環境変数を取得します。
Example
Environmentプロバイダーで取得できるパラメータと環境変数の値を一覧で出力します。
Get-ChildItem Env:パラメータで環境変数を指定します。
Get-ChildItem Env:COLORTERMName、Valueを個別に取得します。
$EnvObj = Get-ChildItem Env:TEMP
$EnvObj.Name
$EnvObj.Valueパラメータ一覧
| コマンド名 | 解説 | 環境変数の値 |
|---|---|---|
| ALLUSERSPROFILE | All Usersのプロファイルパス | C:\ProgramData |
| APPDATA | AppData\Roamingフォルダ | C:\Users\<ユーザ名>\AppData\Roaming |
| CHROME_CRASHPAD_PIPE_NAME | chromeのcrashpadフォルダのパイプ名 | ~省略~ |
| COLORTERM | カラーターム | truecolor |
| CommonProgramFiles | プログラムファイル用の共通ディレクトリ | C:\Program Files\Common Files |
| 'CommonProgramFiles(x86)' | プログラムファイル(x86)用の共通ディレクトリ | C:\Program Files (x86)\Common Files |
| CommonProgramW6432 | プログラムファイル用の共通ディレクトリ | C:\Program Files\Common Files |
| COMPUTERNAME | コンピュータ名 | コンピュータ名等 |
| ComSpec | cmd.exe(コマンドプロンプト)のフルパス | C:\WINDOWS\system32\cmd.exe |
| DriverData | フォルダ | C:\Windows\System32\Drivers\DriverData |
| HOMEDRIVE | ホームドライブ | C: |
| HOMEPATH | ユーザーのホームディレクトリパス | \Users\<ユーザ名> |
| LANG | 選択言語 | ja_JP.UTF-8 |
| LOCALAPPDATA | AppData\Localフォルダ | C:\Users\<ユーザ名>\AppData\Local |
| LOGONSERVER | ログオン中のサーバ名前 | コンピュータ名等 |
| NUMBER_OF_PROCESSORS | PCのプロセッサー数 | ~省略~ |
| OneDrive | OneDrive for Businessのパス名 | C:\Users\<ユーザ名>\OneDrive |
| OneDriveCommercial | OneDrive for Businessのパス名 | C:\Users\<ユーザ名>\OneDrive |
| OneDriveConsumer | 個人用OneDriveのパス名 | C:\Users\<ユーザ名>\OneDrive |
| ORIGINAL_XDG_CURRENT_DESKTOP | 独自のXDG_CURRENT_DESKTOP値 | undefined |
| OS | OS名 | Windows_NT等 |
| Path | 環境変数Pathに設定されているパスの一覧(;区切り) | ~省略~ |
| PATHEXT | 拡張子なしで実行できるファイルの一覧(;区切り) | ~省略~ |
| POWERSHELL_DISTRIBUTION_CHANNEL | PowerShell分布チャンネル | PSES |
| PROCESSOR_ARCHITECTURE | プロセッサーアーキテクチャ | AMDやx86 |
| PROCESSOR_IDENTIFIER | プロセッサーについての説明 | ~省略~ |
| PROCESSOR_LEVEL | プロセッサーのモデル番号 | ~省略~ |
| PROCESSOR_REVISION | プロセッサーのリビジョン番号 | ~省略~ |
| ProgramData | ProgramData | C:\ProgramData |
| ProgramFiles | Program Files | C:\Program Files |
| 'Env:\ProgramFiles(x86)' | Program Files (x86) | Program Files (x86) |
| ProgramW6432 | Program Files | C:\Program Files |
| PSExecutionPolicyPreference | Powershellの実行ポリシー | ~省略~ |
| PSModulePath | PowerShell で利用するモジュールパス(;区切り) | ~省略~ |
| PUBLIC | パブリックディレクトリーパス | C:\Users\Public |
| SESSIONNAME | セッション名 | ~省略~ |
| SystemDrive | システムのドライブレター | C: |
| SystemRoot | システムのルートディレクトリ | C:\WINDOWS |
| TEMP | AppData\Local\Tempフォルダ | C:\Users\<ユーザ名>\AppData\Local\Temp |
| TERM_PROGRAM | 使用プログラム名 | vscode |
| TERM_PROGRAM_VERSION | 使用プログラムのバージョン | 1.77.3 |
| TMP | AppData\Local\Tempフォルダ | C:\Users\<ユーザ名>\AppData\Local\Temp |
| USERDOMAIN | ログオン中のドメイン名 | ~省略~ |
| USERDOMAIN_ROAMINGPROFILE | 移動ユーザープロファイルのドメイン名 | ~省略~ |
| USERNAME | ログオンしているユーザーの名前 | <ユーザ名> |
| USERPROFILE | ユーザプロファイル | C:\Users\<ユーザ名> |
| windir | Windows OSインストールディレクトリ | ~省略~ |
System.Environmentクラスによる特殊フォルダの指定
System.EnvironmentクラスのGetFolderPathメソッドにて特殊フォルダを指定することができます。この方法が一番特殊フォルダの指定できる種類が豊富に揃っているかと思います。
Example
System.Environmentクラスで指定できる特殊フォルダ一覧を名前昇順でターミナルに出力します。
[Environment+SpecialFolder]::GetNames([Environment+SpecialFolder]) | Sort-Objectパラーメータ指定で特殊フォルダ指定することができます。
[Environment]::GetFolderPath("Desktop")パラメータをインテリセンス(入力候補)で出現させたい時は以下の様にコマンド入力します。
[Environment]::GetFolderPath([System.Environment+SpecialFolder]::Desktop)パラメータ一覧
| パラメータ | ディレクトリパス |
|---|---|
| AdminTools | C:\Users\<ユーザ名>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Administrative Tools |
| ApplicationData | C:\Users\<ユーザ名>\AppData\Roaming |
| CDBurning | C:\Users\<ユーザ名>\AppData\Local\Microsoft\Windows\Burn\Burn |
| CommonAdminTools | C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools |
| CommonApplicationData | C:\ProgramData |
| CommonDesktopDirectory | C:\Users\Public\Desktop |
| CommonDocuments | C:\Users\Public\Documents |
| CommonMusic | C:\Users\Public\Music |
| CommonOemLinks | C:\ProgramData\OEM Links |
| CommonPictures | C:\Users\Public\Pictures |
| CommonProgramFiles | C:\Program Files\Common Files |
| CommonProgramFilesX86 | C:\Program Files (x86)\Common Files |
| CommonPrograms | C:\ProgramData\Microsoft\Windows\Start Menu\Programs |
| CommonStartMenu | C:\ProgramData\Microsoft\Windows\Start Menu |
| CommonStartup | C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup |
| CommonTemplates | C:\ProgramData\Microsoft\Windows\Templates |
| CommonVideos | C:\Users\Public\Videos |
| Cookies | C:\Users\<ユーザ名>\AppData\Local\Microsoft\Windows\INetCookies |
| Desktop | C:\Users\<ユーザ名>\Desktop |
| DesktopDirectory | C:\Users\<ユーザ名>\Desktop |
| Favorites | C:\Users\<ユーザ名>\Favorites |
| Fonts | C:\WINDOWS\Fonts |
| History | C:\Users\<ユーザ名>\AppData\Local\Microsoft\Windows\History |
| InternetCache | C:\Users\<ユーザ名>\AppData\Local\Microsoft\Windows\INetCache |
| LocalApplicationData | C:\Users\<ユーザ名>\AppData\Local |
| LocalizedResources | |
| MyComputer | |
| MyDocuments | C:\Users\<ユーザ名>\Documents |
| MyMusic | C:\Users\<ユーザ名>\Music |
| MyPictures | C:\Users\<ユーザ名>\Pictures |
| MyVideos | C:\Users\<ユーザ名>\Videos |
| NetworkShortcuts | C:\Users\<ユーザ名>\AppData\Roaming\Microsoft\Windows\Network Shortcuts |
| Personal | C:\Users\<ユーザ名>\Documents |
| PrinterShortcuts | |
| ProgramFiles | C:\Program Files |
| ProgramFilesX86 | C:\Program Files (x86) |
| Programs | C:\Users\<ユーザ名>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs |
| Recent | C:\Users\<ユーザ名>\AppData\Roaming\Microsoft\Windows\Recent |
| Resources | C:\WINDOWS\resources |
| SendTo | C:\Users\<ユーザ名>\AppData\Roaming\Microsoft\Windows\SendTo |
| StartMenu | C:\Users\<ユーザ名>\AppData\Roaming\Microsoft\Windows\Start Menu |
| Startup | C:\Users\<ユーザ名>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup |
| System | C:\WINDOWS\system32 |
| SystemX86 | C:\WINDOWS\SysWOW64 |
| Templates | C:\Users\<ユーザ名>\AppData\Roaming\Microsoft\Windows\Templates |
| UserProfile | C:\Users\<ユーザ名> |
| Windows | C:\WINDOWS |