📂

PowerShellでダウンロードフォルダーのパスを取得する方法

2023/03/23に公開

概要

PowerShell + ダウンロード + パス + 取得」で検索して、
上位に表示されたこちらの記事ですが、
2023年3月現在、私の環境ではダウンロードフォルダーのパスを取得できませんでした。

深掘りした結果、取得できる方法を見つけたので紹介します。

参考記事:取得できなかった方法

https://mtgpowershell.blogspot.com/2014/02/blog-post.html

取得できなかった方法のエビデンス < クリックで折りたたみが開く >

IE(Internet Explorer)のレジストリを使い取得できていたようですが、
現在はサポート対象外となった為か取得できなくなっています。

コピー用
$ieRegKey = "hkcu:\Software\Microsoft\Internet Explorer\Main"
(get-itemproperty $ieRegKey)."Default Download Directory"
記事の方法だと取得不可
PS C:\Windows> $ieRegKey = "hkcu:\Software\Microsoft\Internet Explorer\Main"
PS C:\Windows> (get-itemproperty $ieRegKey)."Default Download Directory"
PS C:\Windows>
コピー用
$ieRegKey = "hkcu:\Software\Microsoft\Internet Explorer\Main"
get-itemproperty $ieRegKey
get-itempropertyコマンドで全て表示するも"Default Download Directory"がない
PS C:\Windows> $ieRegKey = "hkcu:\Software\Microsoft\Internet Explorer\Main"
PS C:\Windows> get-itemproperty $ieRegKey


Anchor Underline                                                                                 : yes
Cache_Update_Frequency                                                                           : yes
Disable Script Debugger                                                                          : yes
DisableScriptDebuggerIE                                                                          : yes
Display Inline Images                                                                            : yes
Do404Search                                                                                      : {1, 0, 0, 0}
Local Page                                                                                       : %11%\blank.htm
Save_Session_History_On_Exit                                                                     : no
Search Page                                                                                      : http://go.microsoft.
                                                                                                   com/fwlink/?LinkId=5
                                                                                                   4896
Show_FullURL                                                                                     : no
Show_StatusBar                                                                                   : yes
Show_ToolBar                                                                                     : yes
Show_URLinStatusBar                                                                              : yes
Show_URLToolBar                                                                                  : yes
Use_DlgBox_Colors                                                                                : yes
UseClearType                                                                                     : no
XMLHTTP                                                                                          : 1
Enable Browser Extensions                                                                        : yes
Play_Background_Sounds                                                                           : yes
Play_Animations                                                                                  : yes
Start Page                                                                                       : http://192.168.130.3
                                                                                                   4/wordpress/
Default_Page_URL                                                                                 : http://dell17win10.m
                                                                                                   sn.com/?pc=DCTE
OperationalData                                                                                  : 525
CompatibilityFlags                                                                               : 0
SearchBandMigrationVersion                                                                       : 1
FullScreen                                                                                       : no
Window_Placement                                                                                 : {44, 0, 0, 0...}
ImageStoreRandomFolder                                                                           : 6j0ghie
Start Page_TIMESTAMP                                                                             : {226, 50, 203, 192..
                                                                                                   .}
SyncHomePage Protected - It is a violation of Windows Policy to modify. See aka.ms/browserpolicy : {1, 0, 0, 0...}
IE10RunOnceLastShown                                                                             : 1
IE10RunOnceLastShown_TIMESTAMP                                                                   : {23, 69, 93, 161...}
DownloadWindowPlacement                                                                          : {44, 0, 0, 0...}
UseSWRender                                                                                      : 1
IE10RunOncePerInstallCompleted                                                                   : 1
IE10RunOnceCompletionTime                                                                        : {46, 141, 103, 100..
                                                                                                   .}
News Feed First Run Experience                                                                   : 0
SuppressScriptDebuggerDialog                                                                     : 0
AutoHide                                                                                         : yes
Use FormSuggest                                                                                  : no
IE10TourShown                                                                                    : 1
IE10TourShownTime                                                                                : {46, 141, 103, 100..
                                                                                                   .}
IE11EdgeNotifyTime                                                                               : {253, 131, 118, 252.
                                                                                                   ..}
EdgeReminderRemainingCount                                                                       : 1
IE11DefaultsFREConfigUpdateTimestamp                                                             : {46, 161, 54, 25...}
IE11DefaultsFRECompletionTime                                                                    : {46, 161, 54, 25...}
IE11DefaultsFREGPOFileOptions                                                                    : 0
IE11DefaultsFREGPOFileCheck                                                                      : 1
IE11DefaultsFREGPOCheckTimestamp                                                                 : {232, 166, 246, 137.
                                                                                                   ..}
IE11DefaultsFREOfferInterval                                                                     : 365
IE11DefaultsFREOfferType                                                                         : 1
IE11DefaultsFREMaxOfferShowCount                                                                 : 1
IE11DefaultsFRECurrentOfferShowCount                                                             : 0
IEAppEolNotificationLastShownTimeStamp                                                           : {235, 183, 128, 139.
                                                                                                   ..}
PSPath                                                                                           : Microsoft.PowerShell
                                                                                                   .Core\Registry::HKEY
                                                                                                   _CURRENT_USER\Softwa
                                                                                                   re\Microsoft\Interne
                                                                                                   t Explorer\Main
PSParentPath                                                                                     : Microsoft.PowerShell
                                                                                                   .Core\Registry::HKEY
                                                                                                   _CURRENT_USER\Softwa
                                                                                                   re\Microsoft\Interne
                                                                                                   t Explorer
PSChildName                                                                                      : Main
PSDrive                                                                                          : HKCU
PSProvider                                                                                       : Microsoft.PowerShell
                                                                                                   .Core\Registry



PS C:\Windows>

この記事のターゲット

  • PowerShellでダウンロードフォルダーのパスを取得したい方

実行環境

Windows環境

Windows 10 Pro 環境

Get-WmiObjectコマンド
PS C:\Windows> Get-WmiObject Win32_OperatingSystem


SystemDirectory : C:\WINDOWS\system32
Organization    :
BuildNumber     : 19045
RegisteredUser  : XXXXX                     # マスク
SerialNumber    : 00000-00000-00000-AAAAA   # マスク
Version         : 10.0.19045

参考記事:PowerShellでWindowsバージョンを確認する方法

https://macruby.info/powershell/powershell-os-version.html

PowerShell環境

$PSVersionTableコマンド
PS C:\Windows> $PSVersionTable

Name                           Value
----                           -----
PSVersion                      5.1.19041.2673
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.19041.2673
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

対応方法

Shell.Applicationのオブジェクトを参照し、ダウンロードフォルダーのパスが取得できました。
ちなみにNew-Object -ComObjectは「New-Object -Com」や「new-object -com」などでもOK。

コピー用
$shellapp = New-Object -ComObject Shell.Application
$shellapp.Namespace("shell:Downloads").Self.Path
取得できた方法
PS C:\Windows> $shellapp = New-Object -ComObject Shell.Application
PS C:\Windows> $shellapp.Namespace("shell:Downloads").Self.Path
D:\Downloads
PS C:\Windows>

参考記事

下記の2つの記事を組み合わせる事で実現できた。
https://newpops.hatenadiary.org/entry/20060118/p1
https://www.ka-net.org/blog/?p=10473

その他の取得可能なパス一覧

Shellコマンド一覧 < クリックで折りたたみが開く >

コマンド結果の例では、ログインユーザーがAdministratorである場合を想定した内容となる。

取得できる内容 引数 コマンド結果の例
ユーザー Captures shell:Captures C:\Users\Administrator\Videos\Captures
パブリック AppData shell:Common AppData C:\ProgramData
ユーザー AppData shell:AppData C:\Users\Administrator\AppData\Roaming
ユーザー Local AppData shell:Local AppData C:\Users\Administrator\AppData\Local
パブリック Desktop shell:Common Desktop C:\Users\Public\Desktop
ユーザー Desktop shell:Desktop or shell:ThisPCDesktopFolder C:\Users\Administrator\Desktop
パブリック Documents shell:Common Documents C:\Users\Public\Documents
ユーザー Documents shell:Local Documents or shell:Personal C:\Users\Administrator\Documents
パブリック Programs shell:Common Programs C:\ProgramData\Microsoft\Windows\Start Menu\Programs
ユーザー Programs shell:Programs C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs
パブリック Start Menu shell:Common Start Menu C:\ProgramData\Microsoft\Windows\Start Menu
ユーザー Start Menu shell:Start Menu C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu
パブリック Startup shell:Common Startup C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
ユーザー Startup shell:Startup C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
パブリック Templates shell:Common Templates C:\ProgramData\Microsoft\Windows\Templates
ユーザー Templates shell:Templates C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Templates
パブリック Downloads shell:CommonDownloads C:\Users\Public\Downloads
ユーザー Downloads shell:Downloads or shell:Local Downloads C:\Users\Administrator\Downloads
パブリック Music shell:CommonMusic C:\Users\Public\Music
ユーザー Music shell:Local Music or shell:My Music C:\Users\Administrator\Music
パブリック Pictures shell:CommonPictures C:\Users\Public\Pictures
ユーザー Pictures shell:Local Pictures or shell:My Pictures C:\Users\Administrator\Pictures
パブリック Video shell:CommonVideo C:\Users\Public\Videos
ユーザー Video shell:Local Videos or shell:My Video C:\Users\Administrator\Videos
Contacts shell:Contacts C:\Users\Administrator\Contacts
Cookie shell:Cookies C:\Users\Administrator\AppData\Local\Microsoft\Windows\INetCookies
Credentials shell:CredentialManager C:\Users\Administrator\AppData\Roaming\Microsoft\Credentials
Crypto shell:CryptoKeys C:\Users\Administrator\AppData\Roaming\Microsoft\Crypto
Favorites shell:Favorites C:\Users\Administrator\Favorites
Fonts shell:Fonts C:\Windows\Fonts
History shell:History C:\Users\Administrator\AppData\Local\Microsoft\Windows\History
Links shell:Links C:\Users\Administrator\Links
LocalAppDataLow shell:LocalAppDataLow C:\Users\Administrator\AppData\LocalLow
OneDrive shell:OneDrive C:\Users\Administrator\OneDrive
ログインユーザーフォルダー shell:Profile or shell:UsersFilesFolder C:\Users\Administrator
ProgramFiles(64bit) shell:ProgramFiles C:\Program Files
ProgramFiles(32bit) shell:ProgramFilesX86 C:\Program Files (x86)
Common Files(64bit) shell:ProgramFilesCommon C:\Program Files\Common Files
Common Files(32bit) shell:ProgramFilesCommonX86 C:\Program Files (x86)\Common Files
Public shell:Public C:\Users\Public
パブリック Libraries shell:PublicLibraries C:\Users\Public\Libraries
Recent shell:Recent C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Recent
Resources shell:ResourceDir C:\Windows\Resources
SavedGames shell:SavedGames C:\Users\Administrator\Saved Games
SavedPictures shell:SavedPictures C:\Users\Administrator\Pictures\Saved Pictures
Searches shell:Searches C:\Users\Administrator\Searches
SearchHistoryFolder shell:SearchHistoryFolder C:\Users\Administrator\AppData\Local\Microsoft\Windows\ConnectedSearch\History
SendTo shell:SendTo C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\SendTo
System32 shell:System C:\Windows\System32
SystemCertificates shell:SystemCertificates C:\Users\Administrator\AppData\Roaming\Microsoft\SystemCertificates
SystemX86 shell:SystemX86 C:\Windows\SysWOW64
ユーザールートフォルダー shell:UserProfiles C:\Users
UserProgramFiles shell:UserProgramFiles C:\Users\Administrator\AppData\Local\Programs
UserProgramFilesCommon shell:UserProgramFilesCommon C:\Users\Administrator\AppData\Local\Programs\Common
Windowsフォルダー shell:Windows C:\Windows

まとめ

  • Windows OSのオブジェクト(Shell.Application)を使う事でPowerShellでも取得できた。

関連記事

https://haretokidoki-blog.com/pasocon_powershell-startup/
https://zenn.dev/haretokidoki/articles/7e6924ff0cc960

GitHubで編集を提案

Discussion