PowerShell では、.NET Framework を直接ハンドリングすることがありますが、アセンブリがロードされていないとエラーになる仕様になっています。
このため、必要に応じて実行前に「Add-Type -AssemblyName」でアセンブリをロードするのですが、何でもかんでもロードするのは美しくないですね。
実行環境でロードされているアセンブリを確認するには「[System.AppDomain]::CurrentDomain.GetAssemblies()」を使います。
そのままだと必要な情報が表示されないので、「GetName().Name」で名前だけを表示します。
PS C:\> [System.AppDomain]::CurrentDomain.GetAssemblies()
| % { $_.GetName().Name } mscorlib Microsoft.PowerShell.ConsoleHost System System.Core System.Management.Automation System.Management.Automation.resources Microsoft.Management.Infrastructure Microsoft.PowerShell.ConsoleHost.resources System.Xml System.Management System.DirectoryServices System.Numerics System.Data mscorlib.resources Anonymously Hosted DynamicMethods Assembly Microsoft.PowerShell.Security System.Transactions System.Configuration Microsoft.Powershell.PSReadline Microsoft.CSharp Microsoft.PowerShell.Commands.Utility System.Configuration.Install Microsoft.PowerShell.Commands.Management System.ServiceProcess System.xml.resources Microsoft.PowerShell.Commands.Utility.resources System.Security System.Data.SqlXml System.Web.Extensions System.Xml.Linq System.Windows.Forms System.Drawing |
実行のためにロードが必要なアセンブリであれば、「Add-Type -AssemblyName アセンブリ名」か「[void][System.Reflection.Assembly]::LoadWithPartialName(アセンブリ名)」でアセンブリをロードします。
Copyright © MURA All rights reserved.