PowerShell/Scripts/list-special-folders.ps1
2022-09-19 14:15:58 +02:00

63 lines
2.3 KiB
PowerShell

<#
.SYNOPSIS
Lists special folders
.DESCRIPTION
This PowerShell script lists all special folders (sorted alphabetically).
.EXAMPLE
PS> ./list-special-folders
Folder Name Folder Path
----------- -----------
Home Folder C:\Users\Markus
...
.LINK
https://github.com/fleschutz/PowerShell
.NOTES
Author: Markus Fleschutz | License: CC0
#>
function AddLine { param([string]$FolderName, [string]$FolderPath)
New-Object PSObject -property @{ 'Folder Name' = "$FolderName"; 'Folder Path' = "$FolderPath" }
}
function GetTempDir {
if ("$env:TEMP" -ne "") { return "$env:TEMP" }
if ("$env:TMP" -ne "") { return "$env:TMP" }
if ($IsLinux) { return "/tmp" }
return "C:\Temp"
}
function ListSpecialFolders {
if ($IsLinux) {
AddLine "📂Desktop" "$HOME/Desktop"
AddLine "📂Downloads" "$HOME/Downloads"
AddLine "📂Home Folder" "$HOME"
AddLine "📂My Documents" "$HOME/Documents"
AddLine "📂My Music" "$HOME/Music"
AddLine "📂My Pictures" "$HOME/Pictures"
AddLine "📂My Screenshots" "$HOME/Pictures/Screenshots"
AddLine "📂My Videos" "$HOME/Videos"
AddLine "📂Temporary Folder" "$(GetTempDir)"
} else {
$Path = Resolve-Path "$HOME/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup"
AddLine "📂Autostart" "$Path"
AddLine "📂Desktop" "$([Environment]::GetFolderPath('DesktopDirectory'))"
AddLine "📂Downloads" "$((New-Object -ComObject Shell.Application).NameSpace('shell:Downloads').Self.Path)"
AddLine "📂Fonts" "$([Environment]::GetFolderPath('Fonts'))"
AddLine "📂Home Folder" "$HOME"
AddLine "📂My Documents" "$([Environment]::GetFolderPath('MyDocuments'))"
AddLine "📂My Music" "$([Environment]::GetFolderPath('MyMusic'))"
AddLine "📂My Pictures" "$([Environment]::GetFolderPath('MyPictures'))"
AddLine "📂My Screenshots" "$([Environment]::GetFolderPath('MyPictures'))\Screenshots"
AddLine "📂My Videos" "$([Environment]::GetFolderPath('MyVideos'))"
AddLine "📂Temporary Folder" "$(GetTempDir)"
}
}
try {
ListSpecialFolders | Format-Table -property @{e='Folder Name';width=20},'Folder Path'
exit 0 # success
} catch {
"⚠️ Error in line $($_.InvocationInfo.ScriptLineNumber): $($Error[0])"
exit 1
}