0

PowerSheelスクリプトを手動で(PowerShellインタープリターで実行する.batファイルを介して)実行すると、SQLクエリが正しく実行され、Excelファイルが作成されて電子メールで送信されます。

自動化すると(PowerShellファイルを実行する.batファイルをインタープリターで毎晩Windowsジョブスケジューラを介して実行します)、電子メールはファイルなしで送信されます。

ラムダ関数などを使って多くの関数を作成したため、ここでコードをコピーするのは困難ですが、一般的には次のようになります。

$ ExcelWorkBook.SaveAs($ファイル名)

$ ExcelWorkBook.Close()

$ ExcelApp.Quit()

(...)

スリープ-秒500

(...)

$ MailMessage.Attachments.Add($ Filename)

$ SMTP.Send($ MailMessage)

Excelは実際にはGUIなしの自動化(Windowsタスクスケジューラ)をサポートしていないと聞きましたが、実際には別のフレームワークで機能しました。

それを機能させるにはどうすればよいですか?PowerShellから別の方法でExcelファイルを生成する方法がない場合、またはPowerShellでレポートを簡単に生成して電子メールで送信する方法を教えてください。

4

2 に答える 2

0

@ダンはい、そうです。CSVは、企業レポートには非常に貧弱なレポート形式であり、色もフォーマットも何もありません。マネージャーは自分の受信トレイでそれを見つけるために侮辱されるでしょう。

@VonPryz-しかし手動で動作します!それで、あなたはスケジューリングをデバッグすると言いますか?

于 2012-07-30T09:33:41.767 に答える
0

Windows 2008以降を実行している場合、ジョブはおそらくsession0で実行されます(Microsoftでのsession0の分離について読んでください)。

session0のDesktop-Foldersを作成する必要があります。詳細については、 http ://social.msdn.microsoft.com/Forums/en/innovateonoffice/thread/b81a3c4e-62db-488b-af06-44421818ef91を参照してください。

Windows 2008 Server x64このフォルダーをC:\ Windows \ SysWOW64 \ config \ systemprofile\Desktopにしてください

Windows 2008 Server x86このフォルダーをC:\ Windows \ System32 \ config \ systemprofile\Desktopにしてください

その後、マシンを再起動して再試行してください。これらのフォルダーを作成することで、タスクスケジューラとPowerShellを介してGUIを使用しないExcel自動化で動作するようになりました。

于 2012-11-28T22:30:13.957 に答える