PowerShellから.NET FrameWorkを使ってみます。
(本記事はPowerShell入門記事としてコチラにもまとめています。)
スタティックメソッドの呼び出し方法は、
[クラス]::メソッド()
です。
PS C:\Users\takk> [System.Console]::WriteLine("HELLO")
HELLO
PS C:\Users\takk>
PowerShellのWrite-OutPutだと改行されてしまうので、改行したくない場合は、.NETを使えば良いですね。
PS C:\Users\takk> [System.Console]::Write("HELLO1\nHELLO2")
HELLO1\nHELLO2PS C:\Users\takk>
変数に格納して実行することもできます。
PS C:\Users\takk> $con=[System.Console]
PS C:\Users\takk> $con::WriteLine("HELLO")
HELLO
PS C:\Users\takk>
PS C:\Users\takk> $math=[Math] PS C:\Users\takk> $math::Sqrt(121) 11 PS C:\Users\takk>
インスタンスメソッドの呼び出しは、::の代わりに.(ドット)を使います。
RandomのNextメソッド。
PS C:\Users\takk> $r=New-Object System.Random PS C:\Users\takk> $r.Next(10) 1 PS C:\Users\takk> $r.Next(10) 4 PS C:\Users\takk> $r.Next(10) 1 PS C:\Users\takk>
ArrayListのAddメソッド。
PS C:\Users\takk> $list=New-Object System.Collections.ArrayList PS C:\Users\takk> $list.Add(10) 0 PS C:\Users\takk> $list.Add(20) 1 PS C:\Users\takk> $list.Add(30) 2 PS C:\Users\takk> $list 10 20 30 PS C:\Users\takk>
別アセンブリで、デフォルトで使えないクラスは、ロードします。
PS C:\Users\takk> [Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
GAC Version Location
--- ------- --------
True v4.0.30319 C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Windows.Forms\v4.0_4.0.0.0__b77a5c561934e089...
PS C:\Users\takk> $f=New-Object System.Windows.Forms.Form
PS C:\Users\takk> $f.ShowDialog()

Add-Typeの場合。
PS C:\Users\takk> $f=new-object System.Windows.Forms.Form
new-object : 型 [System.Windows.Forms.Form] が見つかりません。この型を含むアセンブリが読み込まれていることを確認してく
ださい。
発生場所 行:1 文字:4
+ $f=new-object System.Windows.Forms.Form
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidType: (:) [New-Object], PSArgumentException
+ FullyQualifiedErrorId : TypeNotFound,Microsoft.PowerShell.Commands.NewObjectCommand
PS C:\Users\takk> Add-Type -AssemblyName System.Windows.Forms
PS C:\Users\takk> $f=new-object System.Windows.Forms.Form
PS C:\Users\takk>

コメント