conf t

インフラエンジニアのメモ

タスクスケジューラでNew-Object -comObject

 

タスクスケジューラでPowerShellスクリプトを実行する際、

New-Object -comObjectできない話。

 

 

メールを送信するPowerSehllを書いてタスクスケジューラを書き

タスクスケジューラで実行させ定期的にメールを送信しようとしました。

 

しかし、なぜかメールが送信されない・・・。

スクリプト単体ではきちんと動作したため、どうやらタスクスケジューラとの

相性が悪い模様。

 

$MsOutlook = New-Object -ComObject Outlook.Application

↑この部分でOutlookオブジェクトが取得できていないのではないか?

 

調べてみると

nashellog: Officeアプリケーションを操作するPowerShellスクリプトをタスクスケジューラから自動起動する方法

 

上記リンクを見つけた。

Windows7 32bitであったため、

C:\Windows\System32\config\systemprofile\Desktop

フォルダのみを作成。

 

しかし、試してみるもうまくいかず。

権限も「最上位の権限で実行する」「ユーザがログオンしているかどうかにかかわらず実行する」にチェック入れたのに。

 

タスクスケジューラには電子メールを送信するという項目がデフォルトである。

決まったメールを送るだけならばこれでも目的は達成されるのですが、

今回はスクリプトで動的にメールの内容を変えたい。

 

私が考え付いたタスクスケジューラを使わない代替手段は以下2つ

(1)スクリプトで時間を計って、メールを送信させる

(2)タスクスケジューラにジョブを登録するコマンドレットを使う

 

で、今のところ(1)で動かしてみています。

時間を正確に測るにはひと工夫必要なのが面倒くさい。

なので今は正確には図らず、Start-Sleepコマンドレットで約1時間を計っている。

 

(2)は出来たらいいなと思っているのですが、まだ方法を調査しきれていません。