0

私は現在、powershell スクリプトを自動化して小さな DB のダンプを作成する作業を行っています。データベースは会社のSharepointからアクセスでき、SharepointからエクスポートされたIQYファイルを利用してデータベースの内容を読み取っています。スクリプトを手動で実行すると (つまり、コマンド ラインから呼び出して)、問題なく動作しますが、タスク スケジューラからスクリプトを開始しようとすると、次の例外が発生します。

System.Reflection.TargetInvocationException

例外を生成している行は次のとおりです。

$iqy = $xl.Workbooks.Open($query, 2, $true)

$xl は正しく作成された新しい Excel.Application ComObject であり、$query は iqy ファイルの完全なファイル パスを含む文字列です。

私の構成に関しては、Sharepoint へのアクセスも許可されているローカル管理者ユーザー (スケジュールされたスクリプトを起動することになっているのと同じユーザー) を使用して、Windows Server 2008R2 でスクリプトを実行しようとしています。Powershell 3.0 を実行しています。SharePoint 関連のスナップインをロードしていません。

私が見つけた唯一の答えは、IQYファイルの場所とExcelのSharepoint自体に「信頼」を与えることを示唆していました. それは助けにはなりませんでした。例外も共有ポイントの問題を示しているようですが、手動で開始するとスクリプトが正常に実行されるため、共有ポイントと関係があるのか​​ 理解できません。タスク スケジューラの複雑さが欠けていますか?

どんな助けでも大歓迎です。

4

1 に答える 1

1

気にしないでください、私は答えを見つけたようです。

誰かが同じ問題に遭遇している場合は、ユーザーがログインしているかどうかに関係なく実行するように設定すると、Excel Com オブジェクトにバグがあり、タスク スケジューラから実行できないようです。これを回避するには、次の 2 を作成します。スクリプトが実行されるマシン上のフォルダー:

(常に 32Bit)

C:\Windows\System32\config\systemprofile\Dektop

(64ビット)

C:\Windows\SysWOW64\config\systemprofile\Desktop

フォルダを作成した後、期待どおりに機能しました。

ソース: http://social.technet.microsoft.com/Forums/windowsserver/en-US/aede572b-4c1f-4729-bc9d-899fed5fad02/run-powershell-script-as-scheduled-task-that-uses-excel- com-object?forum=winserverpowershell

于 2013-10-18T14:17:43.923 に答える