PowerShell C# Cmdlet
ひさしぶりのPowerShellのネタです。
PowerShellを使っていて、ふとコマンドレットって、自分でどうやって作るの? と思い、作ってみました。
いきなりですがテスト結果です。

このようにヘッダがあり、検索ができる形のオブジェクトを出力したかったのですが、調べてみるといろんなやり方がありそうです。結果、anonymous typeを使って実現する方法が簡単で自分の求めていた形になりました。
using System;
using System.Collections.Generic;
using System.Management.Automation;
namespace SumTest
{
[Cmdlet(VerbsCommon.Get, "Sum")]
public class Get_DemoNames: PSCmdlet
{
protected override void ProcessRecord()
{
List<object> list = new List<object>();
int sum = 0;
for(int i=10 ; i<16;i++){
sum += i;
var data = new {Sum = sum, Num = "No" + i, Name = "Name" + i};
list.Add(data);
}
this.WriteObject(list, true);
}
}
}
パッケージのインストールが必要です。
PM> Install-Package System.Management.Automation
環境 : VisualStudio 2010 / Windows 7
プロジェクトは、アプリケーションではなく、クラスライブラリのようです。