私はC#について十分に理解しており、powershellについて非常に基本的な理解を持っています。私はWindows PowerShell CTP 3を使用していますが、これはとても楽しかったです。しかし、私はスクリプト/関数を書くことを超えて行きたいです。 C#に関係するクールなものはありますか?
C#とPowerShellでできる最も興味深いことは、CmdLetを構築することだと思います。これらは基本的に、マネージコードで記述され、通常の機能のように動作するPowerShellのプラグインです。動詞と名詞のペアがあり、既に使用している機能の多くは実際には内部のコマンドレットです。
最高レベルには2つの異なるオプションがあります。C#プログラムからPowerShellをホストし、RunSpacesとパイプラインを介してPowerShellコマンドを実行できます。
または、PowerShell内からC#コードを実行できます。これには2つの方法があります。 PowerShellスナップイン、PowerShellコマンドレットとナビゲーションプロバイダーを提供するコンパイル済みDLL、または新しいコマンドレットAdd-Typeを使用すると、C#、VB、F#コードを動的にインポートできます。ヘルプから
$source = @"
public class BasicTest
{
public static int Add(int a, int b)
{
return (a + b);
}
public int Multiply(int a, int b)
{
return (a * b);
}
}
"@
Add-Type -TypeDefinition $source
[BasicTest]::Add(4, 3)
$basicTestObject = New-Object BasicTest
$basicTestObject.Multiply(5, 2)
次の2つの方法のいずれかで確認できます。
ある程度、それらは異なる答えを持つ非常に異なる質問です。
C#から、PowerShellエンジン、ランスペース、パイプラインなどを活用できます。Exchanteで行われているように、C#を使用してすべてのGUIを実行し、PowerShellコマンドレットを呼び出してすべての難しい処理を実行できます。このオプションは、利用するPowerShellコマンドレットまたはスクリプトを見つけることができる場合に適しています。
PowerShellから、C#を使用して、PowerShellでできることを拡張します。 cmdltとプロバイダーを作成して、他のユーザーがアプリケーションデータにアクセスできるようにすることができます。または、PowerShellスクリプト内で使用できるオブジェクトを作成することもできます。このオプションは、より自動化された方法で管理されるアプリケーションを開くのに役立ちます。
ですから、あなたが何をしたいのかに応じて、選択肢があります。
Scott Hanselman aka Hanselminutes には、Powershell、CmdLets、C#などに関するポッドキャストがいくつかあります。それが何であるか、どのように機能するかなどを学びたい場合は最高です。彼のウェブサイトで検索してポッドキャストを入手してください。
彼のサイトのPS関連ポッドキャストのリスト(新しい順):
#190:State of Powershell/Lee Holmes&Jason Shirk
#162:Powershell 2.
#49:Powershell/Bruce Payette
#36:ジェフリースノーバー、Powershellアーキテクト
#24:Windows Powershell(MONAD)、パートII