« 標準入力をMessageBoxに出すMessageBox.exeを.NETで作る。 | トップページ | PowerShellで、標準入力をMessageBoxに出すMessageBox.PS1を作る。(その2) »

2007年8月17日 (金)

PowerShellで、標準入力をMessageBoxに出すMessageBox.PS1を作る。(その1)

今度は、PowerShellで、標準入力をMessageBoxに出すMessageBox.PS1を作ります。

先のJScript.NETソースをPowerShellスクリプトに焼き直します。

MessageBox.js

import System.Windows.Forms;
System.Windows.Forms.MessageBox.Show(System.Console.In.ReadToEnd());

MessageBox.PS1

[void][Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
[System.Windows.Forms.MessageBox]::Show([System.Console]::In.ReadToEnd())

以下の使い方ができます。

CMD.EXE
powershell.exe
.\MessageBox.PS1
ほにゃらら
へにゃらら
ふにゃらら
^Z

CMD.EXE
MessageBox.PS1
ほにゃらら
へにゃらら
ふにゃらら
^Z
※ 関連付け(その4)を使用。

CMD.EXE
powershell.exe < hoge.txt
.\MessageBox.PS1

CMD.EXE
dir | powershell.exe
.\MessageBox.PS1

しかし、以下は駄目です。

CMD.EXE
powershell.exe
.\MessageBox.PS1 < hoge.txt
※ PowerShellは、< を未サポート。パイプで代替する。

CMD.EXE
powershell.exe
dir | .\MessageBox.PS1
※ PowerShell内のパイプは、[System.Console]::Inで読めない。$inputで読む。

CMD.EXE
powershell.exe -command .\MessageBox.PS1 < hoge.txt
※ -commandは、PowerShell内のパイプと同じ。

CMD.EXE
dir | powershell.exe -command .\MessageBox.PS1
※ 同じ。

CMD.EXE
dir | MessageBox.PS1
※ 関連付けの問題。

CMD.EXE
MessageBox.PS1 < hoge.txt
※ 同じ。

« 標準入力をMessageBoxに出すMessageBox.exeを.NETで作る。 | トップページ | PowerShellで、標準入力をMessageBoxに出すMessageBox.PS1を作る。(その2) »