Windows Power Shellから.NETのクラスライブラリを動かしてみました。
クラスライブラが.NET 4.0フレームワークとジェネリックを利用するため、ちょっとはまりましたが、何とかできました。
手順は下記通り
- PowerShell設定(.NET 4.0クラスライブラリがの時)
PowerShellはデフォルトで.NET 2.0ランタイムを利用するため、.NET 4.0ランタイムを使うよう設定する必要がある。powershell.exeの実行ファイルフォルダにpowershell.exe.configを追加、中身は下記通り
<?xml version="1.0"?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0.30319"/>
<supportedRuntime version="v2.0.50727"/>
</startup>
</configuration> - ライブラリをロード
下記コマンドでクラスライブラリをロードします。ライブラリファイルは絶対パスで指定。
[Reflection.Assembly]::LoadFrom('C:\XXX\XXX.dll') - クラスインスタンスを新規作成
$obj1 = New-Object test.TestClass1
$obj2 = New-Object test.TestClass2("Hello World", 1234, "true", [System.DateTime]::UtcNow) - プロパティGet/プロパティSet/メソッドコール
$val = $obj1.Val
$obj2.Val = 123
$obj1.echo(“Hello world”) - 配列/ジェネリックリスト
$arrays = "id", "name", "detail"
$list = New-Object System.Collections.Generic.List[int]
ジェネリックのタイプがmscorlibアセンブリ以外の場合、下記コマンドでモジュールをインポートする必要があります
"@{ModuleVersion='1.0'; RequiredAssemblies='XXX.dll'}" | Set-Content ./temp.psd1
Import-Module ./temp.psd1
$list2 = New-Object System.Collections.Generic.List[test.TestClass1]
もっさりもふもふ参上!
返信削除