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
プロジェクトは、アプリケーションではなく、クラスライブラリのようです。