-1

load.PS1 があり、以下のように「Microsoft.SqlServer.Smo」をロードします

[System.Reflection.Assembly]::load('Microsoft.SqlServer.Smo') | Out-Null

ISE を使用してロードして実行するとうまく動作しますが、powershell シェルで実行するか、以下のように「powershell -command」.\RemoveInvalidSSRSAgentJob.ps1 xxxx として使用するとエラーが発生します。

Exception calling "Load" with "1" argument(s): "Could not load file or assembly
 'Microsoft.SqlServer.Smo' or one of its dependencies. The system cannot find t
he file specified."
At line:1 char:38
+ & {[System.Reflection.Assembly]::load <<<< ('Microsoft.SqlServer.Smo') | Out-
Null}
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : DotNetMethodException

powershell シェルまたはコマンドで動作するように設定するにはどうすればよいですか?

ありがとう

4

1 に答える 1

1

を使用して回避できます

[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.Smo')

しかし、このメソッドはマイクロソフトから「廃止」と宣言されており、将来的には削除される可能性があります。

メソッド load は、長い形式の名前が指定されたアセンブリをロードするが、ar がそれに部分的な名前を渡すため、失敗します: Read here . そして、ISE で機能するのは本当に奇妙だと思いますが、私にとっては失敗します!

于 2013-04-11T04:36:48.370 に答える