PowerShellスクリプト内にC#のコードを埋め込んで実行することで、PowerShellの柔軟性とC#の強力な機能を組み合わせることができます。今回は、C#のコードをPowerShell内で実行し、変数を使用して計算結果を出力する方法を紹介します。
サンプルコード
以下のPowerShellスクリプトは、C#のコードを埋め込み、コンパイルして実行する方法を示しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
$source = @" using System; public class SampleApp { public static void Main() { int a = 1; int b = 1; int result = a + b; string output = a.ToString() + " + " + b.ToString() + " = " + result.ToString(); // または //string output = string.Format("{0} + {1} = {2}", a, b, result); Console.WriteLine(output); } } "@ # Add-Type コマンドレットを使用してC#のコードをコンパイルし、PowerShell内で使用可能にします。 Add-Type -TypeDefinition $source -Language CSharp # コンパイルされたC#のクラスのメソッドを呼び出して実行します。 [SampleApp]::Main() |
スクリプトの解説
- C#のコードを埋め込む まず、PowerShellのヒアドキュメントを使用してC#のコードを埋め込みます。この方法では、ダブルクォートを1つだけ使用して文字列を連結します。
- C#のコードをコンパイルして実行可能にする 次に、
Add-Type
コマンドレットを使用してC#のコードをコンパイルし、PowerShell内で使用可能にします。 - C#のメソッドを呼び出す 最後に、コンパイルされたC#のクラスのメソッドを呼び出して実行します。
Add-Type コマンドレットのパラメータ一覧
Add-Type
コマンドレットで指定できる主なパラメータは以下の通りです12:
-TypeDefinition <String>
: コンパイルするソースコードを指定します。-Language <Language>
: ソースコードの言語を指定します。既定値はCSharp
です。-ReferencedAssemblies <String[]>
: 参照するアセンブリを指定します。-OutputAssembly <String>
: 出力アセンブリの名前を指定します。-OutputType <OutputAssemblyType>
: 出力アセンブリの種類を指定します。Library
、ConsoleApplication
、WindowsApplication
などがあります。-PassThru
: 型を返します。これにより、新しい型を変数に格納できます。-IgnoreWarnings
: コンパイル時の警告を無視します。-CompilerOptions <String[]>
: コンパイラオプションを指定します。-Name <String>
: 型の名前を指定します。-MemberDefinition <String[]>
: メンバー定義を指定します。-Namespace <String>
: 名前空間を指定します。-UsingNamespace <String[]>
: 使用する名前空間を指定します。-Path <String[]>
: ソースコードファイルのパスを指定します。-LiteralPath <String[]>
: ソースコードファイルのリテラルパスを指定します。-AssemblyName <String[]>
: 既存のアセンブリの名前を指定します。
実行結果
このスクリプトを実行すると、標準出力に「1 + 1 = 2」と表示されます。これにより、C#のコード内で変数を使用して計算を行い、その結果をPowerShellで表示することができます。
コメント