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>
コメント