Windows PowerShell Cmdlet

Slides:



Advertisements
Similar presentations
ベイズ推定に向けた解析環境整備 WinBUGS, R2WinBUGS, RSWBwrapper.R のセッティング.
Advertisements

Windows Workflow Foundation of .NET Framework 3.0
Jsuiteクーロンサービスtutorial
Developer Tools – Visual C /10~
プログラミング言語ADP 大藤雄久.
社会人学習講座 「Javaプログラミング概論」
JXTA Shell (3) P2P特論 (ソフトウェア特論) 第6回 /
知能機械工学科 担当:長谷川晶一 TA:新・後藤・ナンバ
■パス検索 各種ファイルを操作するには、まずパス名をiノードに変換しなければならない。 以下にパス名をiノードに変換する関数の説明を行う。
2006年11月22日 植田龍男 Webサービス II (第9回) 年11月22日 植田龍男.
東京工科大学 コンピュータサイエンス学部 亀田弘之
プログラミング基礎I(再) 山元進.
Java I 第2回 (4/18)
1.1 C/C++言語 Hello.ccを作りコンパイルしてa.outを作り出し実行する
Applet 岡部 祐典 鈴木 敬幸.
Ex7. Search for Vacuum Problem
2008/03/01 D-BOF k.inaba はじめての initial D 2008/03/01 D-BOF k.inaba
Log4netを使ったロギング機能 オガシン.
Log4netを使ったロギング機能 オガシン.
Ex8. Search for Vacuum Problem(2)
6-2 データベース 1.SQLite SQLを単純化した SQLite を使ってデータベースを操作 表「fruit」
WebサービスII (第10回) 2007年11月28日 植田龍男.
PowerShell ver2について ~ついにWindowsサーバー 管理環境の主流へ~
コンポーネントの再利用に必要な情報 えムナウ (児玉宏之)
コンポーネントの再利用に必要な情報 えムナウ (児玉宏之)
JSFによるWebアプリケーション開発 第11回
Servlet J2EE I 第8回 /
JAVA GUIプログラミング 第1回 JAVAの実行 絵を描こう.
とても使いやすい Boost の serialization
ネットワークプログラミング論 平成27年10月12日 森田 彦.
とても使いやすい Boost の serialization
OSとコマンド OS:コンピュータを使うための基本プログラム コマンド:OS上で使用できる命令 OS本体であるカーネルの内部コマンド
JavaServlet&JSP入門 01K0018 中村太一.
構造体.
MSBuild 色々出来るよ 2011/04/02 お だ.
メソッド名とその周辺の識別子の 相関ルールに基づくメソッド名変更支援手法
オブジェクト指向入門.
ネットワークプログラミング論 平成28年10月17日 森田 彦.
RMI ソフトウェア特論 第6回 /
Flyingware : バイトコード変換による 安全なエージェントの実行
プログラミング演習3 第2回 GUIの復習.
Titanium Studioを使った アプリ開発 Vol.1
細かい粒度でコードの再利用を可能とするメソッド内メソッドのJava言語への導入
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
Windows Azure (CTP) 触ってみた
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
暗黙的に型付けされる構造体の Java言語への導入
EclipseでWekaのAPIを呼び出す
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
プログラミング演習3 第2回 GUIの復習.
Jakarta Struts (2) ソフトウェア特論 第11回.
Yochay Kiriaty Senior Technical Evangelist Microsoft® Corporation
Windows Azure (CTP) 触ってみた
インタラクティブ・ゲーム制作 プログラミングコース 補足資料
第1章 実世界のモデル化と形式化 3.地物インスタンスの表現
もっと詳しくArrayクラスについて調べるには → キーワード検索
Javaによる Webアプリケーション入門 第11回
Ex7. Search for Vacuum Problem
PowerShell ver2について ~ついにWindowsサーバー 管理環境の主流へ~
オブジェクト・プログラミング 第8回.
C#プログラミング実習 第3回.
Annotation EJB 3.0 コース 第3回 2006年8月4日.
System.AddInを利用したアプリケーション拡張 - アドインの開発 -
ソフトウェア制作論 平成30年11月28日.
Jakarta Struts (1) ソフトウェア特論 第10回.
How To WPF アプリケーション Part4 By 中博俊.
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
System.AddInを利用したアプリケーション拡張 - アドインの開発 -
計算機プログラミングI 第10回 2002年12月19日(木) メソッドの再定義と動的結合 クイズ メソッドの再定義 (オーバーライド)
How To WPF アプリケーション Part3 By 中博俊.
Presentation transcript:

Windows PowerShell Cmdlet tk-engineering.com

おさらい Windows PowerShellとは… かつて”MONAD”と呼ばれていたものです。 .NET ベースの新しいスクリプト言語です 従来のVBScriptからさらに進化して、COMベースではなく、.NETベースで動くようになります。 .NETベースで動くので、.NETで作られたものとの親和性が高くなります。(型とか…) とにかく、いろいろと便利になります。

今回のお題「コマンドレット」 コマンドレット とは何か VBScriptではどうしていたものか ユーザ独自のシェル拡張です 独自でExeを作って呼び出したり… COM DLL を CreateObjectで呼んだり… そうしていたものを、もっと強力にして…

今回のお題「コマンドレット」-2 コマンドレットは、シェルの一部として動きます コマンドレットは、.NETで作成されます 普通にPowerShellから呼び出せます 例: C:\MSH\> Say-Hello (Say-Hello がコマンドレット) コマンドレットは、.NETで作成されます C#やVB.NETで作成= VSから作成・デバック可能

コマンドレットの作り方-1 まず、新しいShellを作る イロイロなファイルが作成されるので、新しいフォルダを作ることをオススメ。 手順は以下の通り [新しいシェル].cs というファイルが出来るので、 覗いて見るのも一興。 >set-location [作りたいパス] >make-shell –out [新しいシェルの名前] –ns [シェルの名前空間名] (中略) Shell [新しいシェルの名前] is created successfully.

コマンドレットの作り方-2 先ほど作ったシェルを起動してみます やはり、世の中イロイロと難しいようです。 一旦exitで元のShellに戻って、設定を追加します。 注意:表示されるレジストリは環境によって変わります。 > ./[新しいシェル].exe Error loading the extended type data file: Cannot find the registry key: “SOFTWARE\Microsoft\MSH\[名前空間名].newshell\Path”,… (後略)

コマンドレットの作り方-3 新しいシェルに対して各種設定を追加します。 ここまでは「下準備」だったりします。 >$Path = “HKLM:\SOFTWARE\Microsoft\MSH\1\ShellIds\[名前空間名].[シェルの名前] >new-item –type directory $path Hive:Registory::HKEY-LOCAL-MACHINE\...(略) >new-property –path $path –property path –value [新しいシェルのフルパス] MshPath : Registory::HKEY-LOCAL-MACHINE\...(略) >./[新しいシェル].exe

コマンドレットの作り方-4 実際にコマンドレットとなるものを作ります MDCのデモでは、notepadでコードを書いて csc.exe に流し込んでいましたが、それはしません。 素直に VS2005を使用します。 C#-クラスライブラリとして作成します。 System.Management.Automation に対して、参照を追加します。 MONADのインストールフォルダにあります。 using System.Management.Automation;

コマンドレットの作り方-5 実際のクラス定義は… クラスは”Cmdlet”を継承します カスタム属性でコマンド名を定義します ここでは、”say-hello”というコマンドレットを 作成します。 おさらい:こんな訳で必ず「動詞-名詞」の形になります。 [Cmdlet("Say","Hello")] public class MonadTestC1 : Cmdlet {

コマンドレットの作り方-6 パラメータが必要な場合には… プロパティにカスタム属性を付加します。 カスタム属性の説明 Mandatory:true=必須パラメータ Position:順番(0から) VB.NETでも同じようにして作成できます。 [Parameter(Mandatory=true,Position=0)] public string Name { get { return mstrName; } set { mstrName = value; } }

コマンドレットの作り方-7 実際の動作を記述します ProcessRecord を override しているのが ポイントです。 返値の返却に”WriteObject”を使用するのも、 要注意です。(そもそもvoidだし) これにより、MONAD側でのパイプライン使用が可能です。 protected override void ProcessRecord() { WriteObject("Hello " + mstrName); }

コマンドレットの作り方-8 出来上がったDLLをshellに登録します。 以上で「コマンドレット」が使えるようになります。 make-shell -out [新しいシェルの名前] -ns [名前空間名] -reference [コマンドレットのDLL]

まとめ コマンドレットは .NETで作成されます。 コマンドレットの登録には新しいシェルを作成する必要があります。 つまり、必要なコマンドレットを集めた 「オレオレツールボックス」が出来上がります。

リンク Microsoft TechNet (US) http://www.microsoft.com/technet/scriptcenter/hubs/msh.mspx Channel 9 http://channel9.msdn.com/