2

SQL 2005 サーバー エージェント ジョブの一部として実行される複雑な Powershell スクリプトがあります。スクリプトは問題なく動作しますが、「Start-Transcript $strLogfile -Append」コマンドを使用して、すべてのアクションをトランスクリプト ファイルに記録します。問題は、トランスクリプトが常に空であることです。ヘッダーとフッターを追加して、トランスクリプトの開始と停止を示しますが、実際には何も記録しません。例:

**********************
Windows PowerShell Transcript Start
Start time: 20100304173001
Username  : xxxxxxxxxxxx\SYSTEM 
Machine   : xxxxx-xxx (Microsoft Windows NT 5.2.3790 Service Pack 2) 
**********************
**********************
Windows PowerShell Transcript End
End time: 20100304173118
**********************

コマンドプロンプトからスクリプトを実行するか、開始 -> 実行すると、すべて正常に動作します。スクリプトの実行に使用されるコマンドは次のとおりです (SQL エージェント ジョブのオペレーティング システム CmdExec ステップで使用されるコマンドと同じ)。

powershell.exe -File "c:\temp\Backup\backup script.ps1"

最初は、システム アカウント (デフォルトの SQL エージェント アカウント) で実行されているスクリプトに関係があるに違いないと思っていましたが、SQL エージェントを自分の個人アカウントで実行するように変更しようとしても、空白のトランスクリプトが作成されました。

2005 SQL Server エージェント ジョブの一部として PowerShell トランスクリプトを実行するときに、PowerShell トランスクリプトを機能させる方法はありますか?

4

3 に答える 3

1

スクリプトがネイティブコマンド(コンソールexe)を使用している場合、Start-Transriptはその出力をログに記録しません。この問題はConnectに記録されており、投票できます。すべての入力をキャプチャする1つの方法は、cmd.exeを使用することです。

cmd /c powershell.exe -file "C:\temp\backup script.ps1" > backup.log
于 2010-03-05T00:41:52.210 に答える
1

sqlps.exe は、write-host をサポートするメソッドを含む特定のメソッドを実装しません。これは、SQL エージェント Powershell ジョブステップから sqlps.exe を実行しているときに、Start-Transcript を使用して出力が表示されない理由を説明している可能性があります。詳細については、 http://blogs.msdn.com/mwories/archive/2009/09/30/the-use-of-write-host-and-sql-server-agent-powershell-job-steps.aspxを参照してください。

于 2010-03-05T01:20:00.403 に答える
0

Powershell Transcript が空である理由はまだわかりませんが、回避策が見つかりました。SQL ジョブの CmdExec ステップの下に、出力をファイルにキャプチャする高度なオプションがあります。これは、「既存のファイルに出力を追加する」オプションと組み合わせて、Logfile.rtf 拡張子を使用することは、Powershell トランスクリプトとほぼ同じです。このようにして、Powershell スクリプトからホストに出力されるもの ("| out-host" にパイプされたネイティブ コンソール実行可能ファイルを含む) はすべてログ ファイルにキャプチャされます。

于 2010-03-30T00:08:48.440 に答える