その時は System.Environment クラスの GetFolderPath メソッドを使おうとしていたんだけど、このメソッドのパラメータの型は System.Environment.SpecialFolder 列挙体。この列挙体は System.Environment の入れ子型として定義されている。
最初、この列挙体の値を
[System.Environment.SpecialFolder]::MyMusic
といった感じで取得できると思っていたら、ダメだった。System.Environment.SpecialFolder なんていう型は存在しないと怒られる。
CLR が入れ子型をどのように扱っているか見てみると、その入れ子型を含んでいる型名と入れ子型名を "+" で繋いでいるようだ。
つまり System.Environment の入れ子型 SpecialFolder なら System.Environment+SpecialFolder となる。
PowerShell で
[System.Environment+SpecialFolder]::MyMusic
と入力して Enter を押すと、SpecialFolder 列挙値を取得できた。
まぁ、PowerShell だと列挙値の指定の際に、文字列でその列挙値の名前指定することもできるから、今回の場合は
[System.Environment]::GetFolderPath("MyMusic");
って入力すればそれで事足りた訳だけど、すっかり忘れていた^^;
トラックバックURL↓
http://csharper.blog57.fc2.com/tb.php/135-79160c7c