PowerShellから.NET FrameWorkを使ってみます。
(本記事はPowerShell入門記事としてコチラにもまとめています。)
スタティックメソッドの呼び出し方法は、
[クラス]::メソッド()
です。
PS C:\Users\takk> [System.Console]::WriteLine("HELLO")HELLOPS 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")HELLOPS C:\Users\takk> |
PS C:\Users\takk> $math=[Math]PS C:\Users\takk> $math::Sqrt(121)11PS C:\Users\takk> |
インスタンスメソッドの呼び出しは、::の代わりに.(ドット)を使います。
RandomのNextメソッド。
PS C:\Users\takk> $r=New-Object System.RandomPS C:\Users\takk> $r.Next(10)1PS C:\Users\takk> $r.Next(10)4PS C:\Users\takk> $r.Next(10)1PS C:\Users\takk> |
ArrayListのAddメソッド。
PS C:\Users\takk> $list=New-Object System.Collections.ArrayListPS C:\Users\takk> $list.Add(10)0PS C:\Users\takk> $list.Add(20)1PS C:\Users\takk> $list.Add(30)2PS C:\Users\takk> $list102030PS 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.FormPS C:\Users\takk> $f.ShowDialog() |
Add-Typeの場合。
PS C:\Users\takk> $f=new-object System.Windows.Forms.Formnew-object : 型 [System.Windows.Forms.Form] が見つかりません。この型を含むアセンブリが読み込まれていることを確認してください。発生場所 行:1 文字:4+ $f=new-object System.Windows.Forms.Form+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidType: (:) [New-Object], PSArgumentException + FullyQualifiedErrorId : TypeNotFound,Microsoft.PowerShell.Commands.NewObjectCommandPS C:\Users\takk> Add-Type -AssemblyName System.Windows.FormsPS C:\Users\takk> $f=new-object System.Windows.Forms.FormPS C:\Users\takk> |
コメント