2017-09-07 18 views
0

[environment]::getfolderpath("ProgramFiles")を使用してProgram Filesのパスを取得しましたが、Program Dataにもアクセスする必要があります。this ProgramDataのような列挙はこのメソッドでは使用できません。それは本当ですか、私はここで何かを逃していますか?getfolderpath&Program Data

+4

ちょうど '$ env:ProgramData'を使うのですか? – BenH

+0

まあ、プログラムファイルのやり方をする良い方法ですね!これはむしろ古いコードなので、難しい方法を使っているC#の背景を持つ誰かから得たと思います。そして、それが私たちがリファクタリングする理由です! ;) – Gordon

答えて

3

の$ ENV:は、最も簡単な方法は、BenHが既にあなたの質問のコメントで指摘したように$env:ProgramDataを使用することで、環境変数

$env:ProgramData 
4

にアクセスします。 .NETのSpecialfolderを使用して

、あなたは、あなたの最初の例として、文字列かかわらを使用するのではなく、CommonApplicationData

を使用するために必要でしょう:

[Environment]::GetFolderPath('CommonApplicationData')

私が使用してお勧めしたいです開発中に可能な列挙値をインテリセンスに直接取得するように列挙します。

そのスニペットを使用して
$SpecialFolders = New-Object -TypeName psobject 
[Environment+SpecialFolder]::GetNames([Environment+SpecialFolder]) | sort | 
foreach {Add-Member -InputObject $SpecialFolders -Type NoteProperty -Name 
($_) -Value ([Environment]::GetFolderPath($_)) } 


$SpecialFolders | fl 

、あなたが決定している可能性:あなたは、対応する変数は、あなたがきちんとのようなものを使用してそれらをすべて列挙されている可能性を探していますがされていないパスを知っていたので最後に、

[Environment]::GetFolderPath([System.Environment+SpecialFolder]::CommonApplicationData) 

c:\ programdataはCommonApplicationDataに属する特殊なフォルダパスでした。

指定したフォルダが$ envスコープ(例:My documents special folder)にない場合でも、列挙は便利です。