PowerShell でアセンブリをロードするにはどうすればいいですか? 質問する

PowerShell でアセンブリをロードするにはどうすればいいですか? 質問する

次のPowerShellコード

#Get a server object which corresponds to the default instance
$srv = New-Object -TypeName Microsoft.SqlServer.Management.SMO.Server
... rest of the script ...

次のエラー メッセージが表示されます。

New-Object : Cannot find type [Microsoft.SqlServer.Management.SMO.Server]: make sure 
the assembly containing this type is loaded.
At C:\Users\sortelyn\ ... \tools\sql_express_backup\backup.ps1:6  char:8
+ $srv = New-Object -TypeName Microsoft.SqlServer.Management.SMO.Server
+        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidType: (:) [New-Object], PSArgumentException
+ FullyQualifiedErrorId : TypeNotFound,Microsoft.PowerShell.Commands.NewObjectCommand

インターネット上のすべての回答には、アセンブリをロードする必要があると書かれています。確かに、エラー メッセージからそれを読み取ることができます :-) - 質問は次のとおりです。

アセンブリをロードしてスクリプトを動作させるにはどうすればよいですか?

ベストアンサー1

LoadWithPartialNameは非推奨となりました。PowerShell V3の推奨ソリューションは、Add-Typeコマンドレットの例:

Add-Type -Path 'C:\Program Files\Microsoft SQL Server\110\SDK\Assemblies\Microsoft.SqlServer.Smo.dll'

複数の異なるバージョンがあり、特定のバージョンを選択する必要があるかもしれません。 :-)

おすすめ記事