PSSnapInを自作する

メモ程度。

1. Visual Studio 2012でクラスライブラリを作る

2. System.Management.Automation と System.Configuration.Install の2つのアセンブリを追加する。(※System.Management.Automation は C:\Program Files (x86)\Reference Assemblies\Microsoft\WindowsPowerShell\3.0\System.Management.Automation.dll にあるはず)

3. プロジェクトのプロパティで「ビルド後に実行するコマンドライン」でinstallutil.exeを使ってアセンブリをアンインストールする

c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\installutil.exe $(TargetDir)$(TargetFileName)

※x64なアセンブリの場合はFramework64にしよう

image

※installutilを使ってインストールするので、Visual Studioは管理者権限で起動しておかないとうまくいかない(気がする)

4. デバッグ時に外部プログラムを開始するようにする

C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe

引数は以下のようにしてAdd-PSSnapInで読み込む

-noexit -command add-pssnapin buchizo.SnapinTest

image

5. SnapInクラスを継承したクラスを実装する

using System.ComponentModel;
using System.Management.Automation;

namespace buchizo.SnapInTest
{
	[RunInstaller(true)]
	public class buchizoSnapIn : PSSnapIn
    {
		public override string Description
		{
			get { return "test."; }
		}

		public override string Name
		{
			get { return "buchizo.SnapInTest"; }
		}

		public override string Vendor
		{
			get { return "buchizo"; }
		}
    }
}

 

RunInstaller(true)属性を忘れずに。

6. Cmdletクラスを継承してCmdletを実装する。

using System.Management.Automation;

namespace buchizo.SnapInTest
{
	[Cmdlet("Get", "Test")]
	public class GetTest : Cmdlet
	{
		protected override void ProcessRecord()
		{
			this.WriteObject("Test3");
		}
	}
}

 

細かいのはリファレンス参照で。

とりあえずこれで動く。デバッグ実行もOK

image

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中