首页 > 解决方案 > 具有多个 PowerShell 版本的 SpecialFolders

问题描述

PS2.0 中是否有方法可以获取一些直到更高版本才枚举的特殊文件夹?例如,[Environment]::GetFolderPath("ProgramFilesX86")在 PS5.0 中工作,但在 PS2.0 中产生枚举错误。我在想也许有一种基于 .NET 的方法,但我的 Google fu 让我认为即使在 Framework 4 之前的 .NET 中也没有办法,但这似乎也是一个非常明显的疏忽。

标签: powershell

解决方案


下面的第一个命令在 Windows 10 1803 上的 PowerShell 5.1.1 中返回 47。在同一系统上的 PowerShell 2.0 中,它返回 23。如果您删除了 Measure-Object 的管道和 Count 属性点符号,它实际上会显示您可以使用的文件夹的名称。这是以下命令的秒数。

([enum]::GetNames([System.Environment+SpecialFolder]) | Measure-Object).Count

([enum]::GetNames([System.Environment+SpecialFolder]) | Sort-Object) -join "`n"

PowerShell 2.0 特殊文件夹:

ApplicationData
CommonApplicationData
CommonProgramFiles
Cookies
Desktop
DesktopDirectory
Favorites
History
InternetCache
LocalApplicationData
MyComputer
MyDocuments
MyMusic
MyPictures
Personal
ProgramFiles
Programs
Recent
SendTo
StartMenu
Startup
System
Templates

推荐阅读