getfolderpath和程序数据

Gor*_*don 3 powershell

我已经成功地使用[environment]::getfolderpath("ProgramFiles"),以获得路径程序文件,但现在我有必要还可以访问程序数据,它看起来从这个枚举像ProgramData不可用此方法。是真的,还是我在这里想念东西?

Arc*_*Set 7

$ env:访问环境变量

$env:ProgramData
Run Code Online (Sandbox Code Playgroud)


Sag*_*pre 5

最快的方法是使用$env:ProgramDataBenH在问题注释中已经指出的方法。

使用.net Specialfolder,您将需要使用CommonApplicationData

尽管不使用字符串,例如您的初始示例:

[Environment]::GetFolderPath('CommonApplicationData')

我建议您使用枚举,因为在开发时,您将可能的枚举值直接输入到智能感知中。

[Environment]::GetFolderPath([System.Environment+SpecialFolder]::CommonApplicationData)
Run Code Online (Sandbox Code Playgroud)

最后,由于您知道要查找的路径,但不知道相应的变量,因此可以使用类似以下内容的方法将它们全部列出:

$SpecialFolders = New-Object -TypeName psobject
[Environment+SpecialFolder]::GetNames([Environment+SpecialFolder]) | sort | 
foreach {Add-Member -InputObject $SpecialFolders -Type NoteProperty  -Name 
($_) -Value ([Environment]::GetFolderPath($_)) }


$SpecialFolders | fl
Run Code Online (Sandbox Code Playgroud)

使用该代码段,您可以确定c:\ programdata是属于CommonApplicationData的特殊文件夹路径。

如果指定的文件夹不在$ env范围内(例如:我的文档专用文件夹),则枚举仍然可以派上用场。