トップ回答者
PowershellでSystem.Linq名前空間下のクラス利用

質問
-
たびたびすいません。
ひとつ前の質問と微妙に被るのですが、LinqのジェネリックメソッドってPowershellで利用できるのでしょうか?
以下 「Linq.Enumerable」を利用できているよですが、
http://hidori.jp/blog/2011/01/17/9
私の環境では利用できません。(FrameWork 4 インストール済み)
何か特殊な設定がいるのでしょうか?
回答
すべての返信
-
PowerShellにはジェネリックメソッドを呼び出す機能が文法としては備わっていないので、.NET Frameworkのリフレクションの機能を使って呼び出しているという感じですね。
.NETのリフレクションについては
http://msdn.microsoft.com/ja-jp/library/cxz4wk15(VS.80).aspx
などを参考にしてみてください。この中にリフレクションとジェネリックの概要
http://msdn.microsoft.com/ja-jp/library/ms172334(VS.80).aspx
という項目もあります。 -
具体的に何をやりたいかにもよると思うんですよね。
PowerShell は、C# や VB と違い、そもそもパイプライン処理を機能として備えています。このため、C# や VB の Linq の機能を用いなくても、シーケンスに対する処理は、PowerShell の標準的な機能として使用できています。
たとえば、C# にて、
Directory.EnumFiles().Where(f => f.Size > 1024*1024).Select(f => new { f.Name, $f.Size }).OrderBy(t => t.Size);<br/>
というような操作は、PowerShell では、
Get-ChildItem | where $_.Size -gt 1MB | select -Property Name, Size | Sort -Property Size
とかけます。