0

Powershell スクリプトを使用してデータベースのバックアップを行う SQL 2008 ジョブがあります。SQL ジョブの各ステップは「オペレーティング システム (CmdExec)」タイプです。各ステップで、SQL バックアップなどを実行する PowerShell スクリプトが開始されます。そのスクリプトはリモート サーバー上に存在するため、変更が必要な場合でも 1 回で済みます。

Powershell 実行ポリシーを「バイパス」に設定すると、SQL ジョブが機能します。しかし、「リモート署名」に設定すると、実行ポリシーが正しく設定されていないと言って失敗します。ただし、CMD ウィンドウからスクリプトを開始すると、正しく実行されます。サーバーは 64 ビットなので、32 ビット シェルと 64 ビット シェルの両方で実行ポリシーが「remotesigned」に設定されていることを確認しました。また、リモート サーバーの UNC パスを IE で信頼できるイントラネット サイトとして設定しています (IE で設定されていない限り、Powershell はローカル UNC パスを http パスのように扱うことがわかりました)。

私が言ったように、実行ポリシーをリモート署名に設定してCMDウィンドウから手動でキックすると正しく実行され、実行ポリシーがバイパスに設定されている場合にSQLジョブがオフになると動作します。SQL から開始され、実行ポリシーが remotesigned に設定されている場合にのみ失敗します。

Powershell 実行ポリシーをバイパスに設定して問題なく 1 年間実行されていますが、現在、その実行ポリシーをリモート署名に設定するように言われています。バイパスのままにしておくことは、もはやオプションではありません。

何かご意見は?

4

2 に答える 2

0

一部のレガシーアプリケーションをPowershellで動作させるために、次のようなものを含む小さな.bat「ブートストラップ」スクリプトを作成しています。powershell.exe C:\Scripts\MyScript.ps1

クリエイティブでエレガントな、または「問題を解決する」ソリューションではありませんが、CMDで機能する場合は、できるだけ早く機能させるためにこれを試すことができます。

于 2012-01-17T01:37:45.953 に答える
0

ジョブが実行される資格情報がログイン資格情報と異なるようです。

PowerShell スクリプトが期待どおりに実行されるようにするには、エージェント ジョブ ユーザーのアクセス許可を変更する必要がある場合があります。

于 2012-01-16T21:18:25.840 に答える