PowerShell 特殊フォルダの指定方法

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

目次

Shellコマンドによる特殊フォルダ指定

 Shellコマンドによる特殊フォルダの指定方法を紹介します。VBAと同様、Shell.Applicationクラス内のNamespaceメソッドを使用し、引数にパラメータかIndex値を指定します。

Example

パラメータを指定してディレクトリパスを出力します。

$shell = New-Object -ComObject Shell.Application
$shell.NameSpace("shell:Startup").Self.Path

Indexを指定してディレクトリパスを出力します。

$shell = New-Object -ComObject Shell.Application
$shell.NameSpace(29).Self.Path

 Index値が割り当てられている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:Desktop0デスクトップC:\Users\<ユーザ名>\Desktop
shell:InternetFolder1インターネット::{871C5380-42A0-1069-A2EA-08002B30309D}
shell:Programs2プログラムC:\Users\<ユーザ名>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs
shell:ControlPanelFolder3すべてのコントロール パネル項目::{26EE0668-A00A-44D7-9371-BEB064C98683}\0
shell:PrintersFolder4プリンター::{21EC2020-3AEA-1069-A2DD-08002B30309D}\::{2227A280-3AEA-1069-A2DE-08002B30309D}
shell:Personal5ドキュメントC:\Users\<ユーザ名>\Documents
shell:Favorites6お気に入りC:\Users\<ユーザ名>\Favorites
shell:Common Startup7スタートアップC:\Users\<ユーザ名>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
shell:Recent8最近使った項目C:\Users\<ユーザ名>\AppData\Roaming\Microsoft\Windows\Recent
shell:SendTo9SendToC:\Users\<ユーザ名>\AppData\Roaming\Microsoft\Windows\SendTo
shell:RecycleBinFolder10ごみ箱::{645FF040-5081-101B-9F08-00AA002F954E}
shell:Start Menu11スタート メニューC:\Users\<ユーザ名>\AppData\Roaming\Microsoft\Windows\Start Menu
12
shell:Local Music13ミュージックC:\Users\<ユーザ名>\Music
shell:Local Videos14ビデオC:\Users\<ユーザ名>\Videos
15
shell:Desktop16デスクトップC:\Users\<ユーザ名>\Desktop
shell:MyComputerFolder17PC::{20D04FE0-3AEA-1069-A2D8-08002B30309D}
shell:NetworkPlacesFolder18ネットワーク::{F02C1A0D-BE21-4350-88B0-7367FC96EF3C}
shell:NetHood19Network ShortcutsC:\Users\<ユーザ名>\AppData\Roaming\Microsoft\Windows\Network Shortcuts
shell:Fonts20FontsC:\Windows\Fonts
shell:Templates21TemplatesC:\Users\<ユーザ名>\AppData\Roaming\Microsoft\Windows\Templates
shell:Common Start Menu22スタート メニューC:\ProgramData\Microsoft\Windows\Start Menu
shell:Common Programs23プログラムC:\ProgramData\Microsoft\Windows\Start Menu\Programs
shell:Common Startup24スタートアップC:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
shell:Common Desktop25パブリック デスクトップC:\Users\Public\Desktop
shell:AppData26RoamingC:\Users\<ユーザ名>\AppData\Roaming
shell:PrintHood27Printer ShortcutsC:\Users\<ユーザ名>\AppData\Roaming\Microsoft\Windows\Printer Shortcuts
shell:Local AppData28LocalC:\Users\<ユーザ名>\AppData\Local
shell:Startup29スタートアップC:\Users\<ユーザ名>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
shell:Common Startup30スタートアップC:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
shell:Favorites31お気に入りC:\Users\<ユーザ名>\Favorites
shell:Cache32INetCacheC:\Users\<ユーザ名>\AppData\Local\Microsoft\Windows\INetCache
shell:Cookies33INetCookiesC:\Users\<ユーザ名>\AppData\Local\Microsoft\Windows\INetCookies
shell:History34HistoryC:\Users\<ユーザ名>\AppData\Local\Microsoft\Windows\History
shell:Common AppData35ProgramDataC:\ProgramData
shell:Windows36WindowsC:\Windows
shell:System37System32C:\Windows\System32
shell:ProgramFiles38Program FilesC:\Program Files
shell:Local Pictures39ピクチャC:\Users\<ユーザ名>\Pictures
shell:Profile40<ユーザ名>C:\Users\<ユーザ名>
shell:SystemX8641SysWOW64C:\Windows\SysWOW64
shell:ProgramFilesX8642Program Files (x86)C:\Program Files (x86)
shell:ProgramFilesCommon43Common FilesC:\Program Files\Common Files
shell:ProgramFilesCommonX8644Common FilesC:\Program Files (x86)\Common Files
shell:Common Templates45TemplatesC:\ProgramData\Microsoft\Windows\Templates
shell:Common Documents46パブリックのドキュメントC:\Users\Public\Documents
shell:Common Administrative Tools47Windows 管理ツールC:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools
shell:Administrative Tools48Windows 管理ツールC:\Users\<ユーザ名>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Administrative Tools
shell:ConnectionsFolder49ネットワーク接続::{21EC2020-3AEA-1069-A2DD-08002B30309D}\::{7007ACC7-3202-11D1-AAD2-00805FC1270E}
50
51
52
shell:CommonMusic53パブリックのミュージックC:\Users\Public\Music
shell:CommonPictures54パブリックのピクチャC:\Users\Public\Pictures
shell:CommonVideo55パブリックのビデオC:\Users\Public\Videos
shell:ResourceDir56ResourcesC:\Windows\Resources
57
shell:OEM Links58OEM LinksC:\ProgramData\OEM Links
shell:CD Burning59一時書き込みフォルダーC:\Users\<ユーザ名>\AppData\Local\Microsoft\Windows\Burn\Burn
60
shell:NetworkPlacesFolder61ネットワーク::{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フォルダ名ディレクトリパス
AllUsersDesktop0全ユーザー共通のデスクトップC:\Users\Public\Desktop
AllUsersStartMenu1全ユーザー共通のプログラムメニューC:\ProgramData\Microsoft\Windows\Start Menu
AllUsersPrograms2全ユーザー共通のプログラムC:\ProgramData\Microsoft\Windows\Start Menu\Programs
AllUsersStartup3全ユーザー共通のスタートアップC:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
Desktop4デスクトップC:\Users\<ユーザー名>\Desktop
AppData5AppData\RoamingフォルダC:\Users\<ユーザー名>\AppData\Roaming
PrintHood6プリンタショートカットフォルダC:\Users\<ユーザー名>\AppData\Roaming\Microsoft\Windows\Printer Shortcuts
Templates7TemplatesフォルダC:\Users\<ユーザー名>\AppData\Roaming\Microsoft\Windows\Templates
Fonts8フォントフォルダC:\Windows\Fonts
NetHood9Network ShortcutsフォルダC:\Users\<ユーザー名>\AppData\Roaming\Microsoft\Windows\Network Shortcuts
Desktop10デスクトップC:\Users\<ユーザー名>\Desktop
StartMenu11スタートメニューC:\Users\<ユーザー名>\AppData\Roaming\Microsoft\Windows\Start Menu
SendTo12SendToフォルダC:\Users\<ユーザー名>\AppData\Roaming\Microsoft\Windows\SendTo
Recent13最近使った項目C:\Users\<ユーザー名>\AppData\Roaming\Microsoft\Windows\Recent
Startup14スタートアップフォルダC:\Users\<ユーザー名>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
Favorites15お気に入りC:\Users\<ユーザー名>\Favorites
MyDocuments16マイドキュメントC:\Users\<ユーザー名>\Documents
Programs17プログラムメニューC:\Users\<ユーザー名>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs

Environmentプロバイダーによる特殊フォルダ指定

 PowerShellで環境変数を取得する場合、Environmentプロバイダーを利用します。環境変数の中でも特殊フォルダ指定できる項目があるため、特殊フォルダ指定の一例として紹介します。パラメータを指定して環境変数を取得します。

Example

Environmentプロバイダーで取得できるパラメータと環境変数の値を一覧で出力します。

Get-ChildItem Env:

パラメータで環境変数を指定します。

Get-ChildItem Env:COLORTERM

Name、Valueを個別に取得します。

$EnvObj = Get-ChildItem Env:TEMP
$EnvObj.Name
$EnvObj.Value

パラメータ一覧

コマンド名解説環境変数の値
ALLUSERSPROFILEAll UsersのプロファイルパスC:\ProgramData
APPDATAAppData\RoamingフォルダC:\Users\<ユーザ名>\AppData\Roaming
CHROME_CRASHPAD_PIPE_NAMEchromeの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コンピュータ名コンピュータ名等
ComSpeccmd.exe(コマンドプロンプト)のフルパスC:\WINDOWS\system32\cmd.exe
DriverDataフォルダC:\Windows\System32\Drivers\DriverData
HOMEDRIVEホームドライブC:
HOMEPATHユーザーのホームディレクトリパス\Users\<ユーザ名>
LANG選択言語ja_JP.UTF-8
LOCALAPPDATAAppData\LocalフォルダC:\Users\<ユーザ名>\AppData\Local
LOGONSERVERログオン中のサーバ名前コンピュータ名等
NUMBER_OF_PROCESSORSPCのプロセッサー数~省略~
OneDriveOneDrive for Businessのパス名C:\Users\<ユーザ名>\OneDrive
OneDriveCommercialOneDrive for Businessのパス名C:\Users\<ユーザ名>\OneDrive
OneDriveConsumer個人用OneDriveのパス名C:\Users\<ユーザ名>\OneDrive
ORIGINAL_XDG_CURRENT_DESKTOP独自のXDG_CURRENT_DESKTOP値undefined
OSOS名Windows_NT等
Path環境変数Pathに設定されているパスの一覧(;区切り)~省略~
PATHEXT拡張子なしで実行できるファイルの一覧(;区切り)~省略~
POWERSHELL_DISTRIBUTION_CHANNELPowerShell分布チャンネルPSES
PROCESSOR_ARCHITECTUREプロセッサーアーキテクチャAMDやx86
PROCESSOR_IDENTIFIERプロセッサーについての説明~省略~
PROCESSOR_LEVELプロセッサーのモデル番号~省略~
PROCESSOR_REVISIONプロセッサーのリビジョン番号~省略~
ProgramDataProgramDataC:\ProgramData
ProgramFilesProgram FilesC:\Program Files
'Env:\ProgramFiles(x86)'Program Files (x86)Program Files (x86)
ProgramW6432Program FilesC:\Program Files
PSExecutionPolicyPreferencePowershellの実行ポリシー~省略~
PSModulePathPowerShell で利用するモジュールパス(;区切り)~省略~
PUBLICパブリックディレクトリーパスC:\Users\Public
SESSIONNAMEセッション名~省略~
SystemDriveシステムのドライブレターC:
SystemRootシステムのルートディレクトリC:\WINDOWS
TEMPAppData\Local\TempフォルダC:\Users\<ユーザ名>\AppData\Local\Temp
TERM_PROGRAM使用プログラム名vscode
TERM_PROGRAM_VERSION使用プログラムのバージョン1.77.3
TMPAppData\Local\TempフォルダC:\Users\<ユーザ名>\AppData\Local\Temp
USERDOMAINログオン中のドメイン名~省略~
USERDOMAIN_ROAMINGPROFILE移動ユーザープロファイルのドメイン名~省略~
USERNAMEログオンしているユーザーの名前<ユーザ名>
USERPROFILEユーザプロファイルC:\Users\<ユーザ名>
windirWindows 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)

パラメータ一覧

パラメータディレクトリパス
AdminToolsC:\Users\<ユーザ名>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Administrative Tools
ApplicationDataC:\Users\<ユーザ名>\AppData\Roaming
CDBurningC:\Users\<ユーザ名>\AppData\Local\Microsoft\Windows\Burn\Burn
CommonAdminToolsC:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools
CommonApplicationDataC:\ProgramData
CommonDesktopDirectoryC:\Users\Public\Desktop
CommonDocumentsC:\Users\Public\Documents
CommonMusicC:\Users\Public\Music
CommonOemLinksC:\ProgramData\OEM Links
CommonPicturesC:\Users\Public\Pictures
CommonProgramFilesC:\Program Files\Common Files
CommonProgramFilesX86C:\Program Files (x86)\Common Files
CommonProgramsC:\ProgramData\Microsoft\Windows\Start Menu\Programs
CommonStartMenuC:\ProgramData\Microsoft\Windows\Start Menu
CommonStartupC:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
CommonTemplatesC:\ProgramData\Microsoft\Windows\Templates
CommonVideosC:\Users\Public\Videos
CookiesC:\Users\<ユーザ名>\AppData\Local\Microsoft\Windows\INetCookies
DesktopC:\Users\<ユーザ名>\Desktop
DesktopDirectoryC:\Users\<ユーザ名>\Desktop
FavoritesC:\Users\<ユーザ名>\Favorites
FontsC:\WINDOWS\Fonts
HistoryC:\Users\<ユーザ名>\AppData\Local\Microsoft\Windows\History
InternetCacheC:\Users\<ユーザ名>\AppData\Local\Microsoft\Windows\INetCache
LocalApplicationDataC:\Users\<ユーザ名>\AppData\Local
LocalizedResources
MyComputer
MyDocumentsC:\Users\<ユーザ名>\Documents
MyMusicC:\Users\<ユーザ名>\Music
MyPicturesC:\Users\<ユーザ名>\Pictures
MyVideosC:\Users\<ユーザ名>\Videos
NetworkShortcutsC:\Users\<ユーザ名>\AppData\Roaming\Microsoft\Windows\Network Shortcuts
PersonalC:\Users\<ユーザ名>\Documents
PrinterShortcuts
ProgramFilesC:\Program Files
ProgramFilesX86C:\Program Files (x86)
ProgramsC:\Users\<ユーザ名>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs
RecentC:\Users\<ユーザ名>\AppData\Roaming\Microsoft\Windows\Recent
ResourcesC:\WINDOWS\resources
SendToC:\Users\<ユーザ名>\AppData\Roaming\Microsoft\Windows\SendTo
StartMenuC:\Users\<ユーザ名>\AppData\Roaming\Microsoft\Windows\Start Menu
StartupC:\Users\<ユーザ名>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
SystemC:\WINDOWS\system32
SystemX86C:\WINDOWS\SysWOW64
TemplatesC:\Users\<ユーザ名>\AppData\Roaming\Microsoft\Windows\Templates
UserProfileC:\Users\<ユーザ名>
WindowsC:\WINDOWS
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

VBAを中心とした自動化、効率化の手法を紹介しています。現在は、SeleniumBasicのexamplesを紹介しています。その内、SeleniumBasic以外の手法も掲載したいと思っております。

目次