PowerShell で複数行のコマンドをプログラムする。

対話型のシェルで小さいプログラムをテストするとき、煩わしいのがプログラムをファイルに作成するという操作だ。ほんの数行のプログラムをテストしたいのに、いちいちエディタを立ち上げるのはかなり面倒に感じる。

PowerShell は原則として一行のコマンドレットしか実行できないが、Invoke-Expression とヒアドキュメントを組み合わせると、次の実行例のように、複数行にわたるスクリプトを実行することができる。

PS > Invoke-Expression @'
>> $total = 0
>> for ($i = 1; $i -le 10; $i++) {
>>     $total += $i
>> }
>> Write-Host "total = ", $total
>> '@
>>
total = 55

PowerShell では Add-Type コマンドレットを使うと、C#のソースも実行させることができるので、上のプログラムはC#を使って次のように実行することもできる。

PS > $source = @"
>> public class MyClass
>> {
>>    public static int Total()
>>     {
>>         int total = 0;
>>         for (int i = 1; i <= 10; i++)
>>             total += i;
>>         return total;
>>     }
>> }
>> "@
>>
PS > Add-Type -TypeDefinition $source
PS > [MyClass]::Total()
55
[PR]
by tnomura9 | 2011-01-30 00:00 | C# | Comments(0)
<< C# のインタラクティブ・シェ... PowerShell でC#の... >>