2008.08.14この記事は以前にdevslife.comに掲載したものです。ある日「PowerShellで独自の結果を返すにはどうすればいいのだろう?」と考えていた。カスタムコマンドレットを作成すればアセンブリ内でクラスを作ってそれをWriteObjectを使って返してやればいいのだろうけど、スクリプト内でできないものだろうか?と疑問に思った。そこでPSObjectの登場だ。FrameworkのSystem.Objectと同じような位置づけである。非常に汎用的なオブジェクトなのだ。PSObjectをインスタンス化してそのメンバーを見てみると・・・それだけでは使えるものがほとんどない。このオブジェクトにプロパティやメソッドを追加して使えるものにしていこうという魂胆である。Frameworkで言うならばSystem.Reflection.Emitの名前空間に存在するクラスを使って動的にクラス、プロパティ、メソッド、そして最終的にはアセンブリまで作れてしまうのがある。PowerShellで動的にメンバーを追加するにはAdd-Memberというコマンドレットを使用する。ためしに上でインスタンス化したPSObjectにCustomerIDというプロパティを追加してみよう。一つのインスタンスのPSObjectでは複数の結果を返すことができない。そこでArrayListを使ってみよう。上の例にはもちろん複数のプロパティを追加すると複数の列の結果が得られる。この結果をパイプを使って次のコマンドレットに渡すことも可能だ。-detailedで詳細を読んでみてほしい。ファイル保存ダイアログを使用できるようにする関数を作成しました。下記がそのコードです。SaveFileDi...PowerShellVB.NETやC#からPowerShellのコマンドレットを使用するVB.NETやC#からPowerShellを利用するには、System.Management.Automation.dllを使用します。CTP3が公開されました。Backup-GPOコマンドレットを使用します。ドメイン内のすべてのGPOをバックアップするにはAllパラメーターを指定します。既存のActiveDirectory組織単位(OU)を取得する方法について説明します。書き換えてみようということで、自分で使ってみたものから書いてみます。コメントをキャンセルメールアドレスが公開されることはありません。*サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。コメントデータの処理方法の詳細はこちらをご覧ください。タイトルとURLをコピーしました。