ロード済みアセンブリ取得方法
Powershellでクオータが不足しいています、と表示され犯人探し中。
Powershellでは、一度ロードしたアセンブリの解放はコンソールが終了する時らしいので、重複ロードされている可能性があり、その調査用。
まずはアセンブリの重複ロードを疑う。そのため、ロード済みアセンブリの取得方法を確認。
* ロード済みアセンブリ取得方法
[System.AppDomain]::CurrentDomain.GetAssemblies()
このままだと、表示が多いので名前だけ取得する。
[System.AppDomain]::CurrentDomain.GetAssemblies() | % { $_.GetName().name }
ある名前のアセンブリのロード済み確認なら、
Function check_asm ($asm){
[System.AppDomain]::CurrentDomain.GetAssemblies() | ? { $_.Getname().name -eq $asm }
}
呼び出し例
$sagasu = "System.Security"
if ( check_asm($sagasu) ) {
write-host "$sagasu が見つかった"
} else {
write-host "$sagasu なかった"
}
* 複数を探したいなら
Function check_asms ($asms){
[System.AppDomain]::CurrentDomain.GetAssemblies() | % { if ($asms.contains( $_.Getname().name )){ $_ } }
}
* 呼び出し例
見つかった物を$attaに格納してから表示。
$sagasu = "System.Security", "System.CSharp"
$atta = check_asms($sagasu)
if ( $atta ) {
write-host "$atta が見つかった"
} else {
write-host "$sagasu 一つも なかった"
}
既にロードされていたら、ロードする判断に使えば重複ロードが無くなる。