web-dev-qa-db-ja.com

スケジュールされたタスクからのバッチファイルはコード2147942401を返します

Windows 10タスクスケジューラでバッチファイルを実行するジョブをスケジュールしようとしていますが、戻りコード2147942401が発生します。

バッチファイルはリモートロケーションにあるため、絶対パスを指定しています
"\\ server1\file transfers\data files\inbound\abc\csv\Excel-to-csv.bat"

コマンドプロンプトでバッチスクリプトを実行すると、正常に動作します。 Properties - GeneralActions - Edit Action

バッチスクリプトは、Excelをcsvにファイルに変換します。

スクリプトの内容は次のとおりです。

FOR /f "delims=" %%i IN ("\\server1\file transfers\Data Files\Inbound\abc\CSV\*.xlsx" ) DO to-csv.vbs  "\\server1\file transfers\Data Files\Inbound\abc\*.xlsx" "%%~ni.csv"

別の呼び出しVB to-cvs.vbsであるスクリプト

@Steinspecht(タスクスケジューラ-タスクが終了コード0x8007001で「正常に完了しました」)で言及されているようにアクションタブで変更を加えると、コード2147942401 を取得しています書かれた正しいenter image description here

7
Sbanga

タスクスケジューラのエラーコードは msdn で16進数としてリストされ、コード2147942401は0x80070001(そこにはリストされていません)として16進数に変換されますが、 このスーパーユーザー は「不正な機能」。彼は、「最も単純なタスクスケジューラ設定を使用して、今では機能する」ことで問題を修正しました。ユーザーがログインしているときにのみタスクを実行するため、「バッチジョブとしてログオンする」必要はありません。

ログインしていないときにバッチジョブを実行する場合は、「バッチジョブとしてログオン」という特別な権限が必要です。 「バッチジョブとしてログオンを拒否する」特権も必要であることに注意してください。

Social Technet から、その特権を次のように割り当てることができます。

  • 入力secpol.msc/s
  • 「MSC snap in」で「Local Policies」」を選択します
  • ユーザー権利の割り当て」を選択します
  • バッチジョブとしてログオン」を右クリックし、「プロパティ」を選択します
  • ユーザーまたはグループを追加」をクリックし、関連するユーザーを含めます。

Local Security Policy Snap-In

タスクはネットワークリソースを呼び出します。これらの powershell scripters は、ネットワーク/接続性/アクセス許可の問題の可能性を排除するために、これらのリソースをローカルマシンに持ち込むことをお勧めします。

8
woodvi

このエラーコードは、すべてのタスクスケジューラの設定、権限などが正しい場合でも、実際のP​​owershellスクリプトのバグ/間違いから生じることもあります。私の場合、存在しないディレクトリを参照していました。

3
M Herbener

古い質問ですが、Windows 2016サーバーで2147942401エラーが発生していました。

スケジュールされたタスクのプロパティを見ると、[全般]タブの下部で、既定の構成が[Windows Vista、Windows Server 2008]になっています。

Windows Server 2016に変更され、問題は解決されました。

1
user3507000

エラーアクションの別の一般的な原因を投げる"powershell.exe" with return code 2147942401 ここに。アクションの引数が正しくない場合も、このエラーメッセージが表示されます。アクション引数のパラメーターとパラメーター値の間隔が正しいことを確認してください。

良い例え:

-executionpolicy bypass -file "C:\Scripts\ImportFiles.ps1"

壊れた例(「file」パラメーターとその値の間にスペースがない):

-executionpolicy bypass -file"C:\Scripts\ImportFiles.ps1"
1
BrianCanFixIT

M Herbenerの答えは、スクリプトにエラーがあったかどうかを確認するために、スクリプトを手動で実行しようとしたことにつながりました。それはしませんでしたが、エラーメッセージを受け取ったときに問題が何であったかを強調しました。

このシステムではスクリプトの実行が無効になっているため、[my script]をロードできません。

解決策は、もちろん、Powershellスクリプトを実行できるようにSet-ExecutionPolicyを実行することでした。

0
paulH