Powershellでアセンブリを参照しまくる

.netのクラスを探す方法は書いた。
http://d.hatena.ne.jp/junjun777/20140115/powershell_search_type


その際、アセンブリが読み込まれていないと探せない。
じゃあ、あらんかぎりを取得してはどうか、ということで書いてみた。

start powershell '-Command', { Get-ChildItem $env:SystemRoot\assembly | %{ if(-not ($_.Name -match '32$')) { Get-ChildItem "$env:SystemRoot\assembly\$($_.Name)" | %{ (Add-Type -AssemblyName $_.Name -PassThru) | %{ if($_.IsPublic){ $_ } } } } } | Select-Object Name,BaseType,AssemblyQualifiedName,Attributes | ogv; Read-Host 'Press Enter Key!'; exit }

大量なので、グリッドビューが重くなります。
しかし、グリッドビューはフィルタリングとかできて、便利です。


あと、グローバルアセンブリのフォルダーの参照方法が適当。
x64環境で実行しているので、末尾に32がつくフォルダーはAdd-Typeしないようにしてみた。
依存関係無視してやってるのでエラー出まくり。
どうせエラー出るなら、32を除外しなくても良い気がする。
「-not ($_.Name -match '32$')」を「$true」にでもしてしまえば、全て取得を試みる。


なんだっけ、あのクラス、ないんだけど、という時に使ってみてください。