Powershellで始める
.NET プログラミング
夏目 祐樹
自己紹介
 本名: 夏目祐樹
 HN: ルシフ, 斗山新一, 水菱啓
 Twitter: @sinofseven
 新卒1年目のシステムエンジニア
 開発者を自称してますが、
業務で書いているのがChefのため運用寄りに見られる。
 先日のハッカソンで”Chef Guy”の称号を得る。
 副業で、プロデューサー兼音ゲーマー。
最近提督にも復職。
兵藤レナ(27)
.NET プログラミング
 C#やVB.NET
 Visual Studioを
使うことがほとんど
 基本構成で
12GBの容量を持っていかれる
 そのためダウンロード、
インストールに時間がかかる
 入れるの結構面倒
安心してください
PowerShell
で.NET Frameworkが使えます
 エディターはPowerShell ISE が
標準でインストールされている。
(VSには劣るけど
インテリジェンスもあるよ)
ご注意を
 ただし、PowerShellは.NET Frameworkの
すべてのクラスを読み込んでいるわけではない。
 そのため、アセンブリを自分で読み込む必要がある。
 方法は4つ。
・Load() メソッド
・LoadFrom() メソッド
・LoadWithPartialName() メソッド
・Add-Type コマンドレット
 本当は他にも気にすることあるけど、今回は気にしない
 若干複雑
(フルネームって言うらしい)
 Versionまでは理解できるけど、
Cultureって何??
PublicKeyTokenって何??
(作成時間の都合で未調査です)
Load メソッド
[Reflection.Assembly]::Load(“System.Net.Http, Version=4.0.0.0,
Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”)
LoadFrom メソッド
 dllまでのフルパスを書く
 自作のライブラリを使用するときとかはたぶんこれ
(自分は使ったことはない
[Reflection.Assembly]::LoadFrom("C:¥Program Files (x86)¥Reference
Assemblies¥Microsoft¥Framework¥.NETCore¥v4.5.1¥System.Net.Http.dll")
LoadWithPartialName() メソッド
 なんか見慣れえた形で指定できる
(Partial Nameって言うらしい)
 基本的にこれを使えばいいんじゃないかな
[Reflection.Assembly]::LoadWithPartialName("System.Net.Http")
Add-Type
 PowerShel 2.0 から追加されたコマンドレット
 ただLoadWithPartialName()とは見てるテーブルが違うらしく、
同じアセンブリが複数バージョンあると失敗するらしい
 そのときはフルネームを書けば読めるらしい
(けど、使いにくいね)
Add-Type -AssemblyName System.Net.Http
Add-Type -AssemblyName "Microsoft.SqlServer.SMO,
Version=11.0.0.0, Culture=neutral,
PublicKeyToken=89845dcd8080cc91"
まとめ
 WindowsならPowerShellで.NETプログラミングできるよ
 エディターならPowerShell ISEが標準で付いてるよ
 .NET をフルに使おうとすると
アセンブリ(dll)を読み込む必要があるよ
 アセンブリの読み込みは、
[Reflection.Assembly]::LoadFrom() か
[Reflection.Assembly]::LoadWithPartialName() を
使えばいいよ
 文法とか若干特殊だけど、そこは調べてください
[参考資料]
PowerShell の Add-Type と [Reflection.Assembly]
http://tech.guitarrapc.com/entry/2014/03/17/042253

Powershellで始める.net プログラミング