タスク スケジューラ PowerShell スクリプトが実行されない

タスク スケジューラ PowerShell スクリプトが実行されない

毎日朝に Excel ファイルを開き、マクロを実行して閉じる PowerShell スクリプトがあります。これは、従来のネットワーク ドライブを Sharepoint Online に移行するまで、問題なく動作していました。

スクリプトを手動で実行すると、スクリプトが起動し、必要な処理を実行します。ただし、タスク スケジューラに配置すると、ファイルが開きません。

私は次のことを試みました:

  • スクリプトを OneDrive フォルダーの外に配置すると、スクリプトは実行されますが、ファイルは開きません。
  • スクリプトとファイルを OneDrive と Sharepoint の外部に配置すると、スクリプトが実行され、ファイルが開きます。
  • OD/SP の両方でタスク スケジューラを実行して Powershell ウィンドウを開き、そこからスクリプトを実行します。最初のウィンドウは開きますが、2 番目のスクリプトを実行すると Powershell は閉じます。

タスクを実行するユーザーである私自身は、スクリプトとファイルの両方が配置されているフォルダーを完全に制御できます。前述のように、これらのすべてのケースでは、スクリプトを手動で実行するとスクリプトが機能します。インターネットでもログでも何も見つからないようです (私が盲目でない限り、以前のすべてのタスクの実行後にログは作成されません)。もう調べる余地がなくなってきています。

誰か何かアイデアやアドバイスはありますか?

ありがとう!

答え1

タスク スケジューラ PowerShell スクリプトが実行されない

あなたが説明したことと私が見たものに基づいて設定に応じたXMLファイルどこにありますか?

<Exec>
  <Command>"C:\Path\To\OneDrive - Company Ltd\Scripts\pwsh\DonwloadOpen.ps1"</Command>
  <Arguments>-ExecutionPolicy Bypass</Arguments>
<Exec>

タスク スケジューラから PowerShell を実行するには、代わりに次のように構成する必要があると思います。

<Exec>
  <Command>Powershell</Command>
  <Arguments>-ExecutionPolicy Bypass -File "C:\Path\To\OneDrive - Company Ltd\Scripts\pwsh\DonwloadOpen.ps1"</Arguments>
</Exec>

だから、アクションタブで作成しますアクション次のように定義されます:

  • アクション: Start a program
  • プログラム/スクリプト: Powershell
  • 引数を追加します(オプション): -ExecutionPolicy Bypass -File "C:\Path\To\OneDrive - Company Ltd\Scripts\pwsh\DonwloadOpen.ps1"
  • 開始場所(オプション): C:\Windows\System32\WindowsPowerShell\v1.0 ここに画像の説明を入力してください

さらに、あなたのケースではこれらのオプションのいくつかが役立つかもしれませんが、セキュリティと構成に基づいて、それらが 100% 必要であるとは言えませんが、テストするのは簡単です。

から一般的なスケジュールされたタスクのタブで、ユーザーがログオンしているかどうかに関係なく実行するそしてその最高権限で実行するオプションは両方とも選択されています。

ここに画像の説明を入力してください

追加リソース


関連情報