web-dev-qa-db-ja.com

Windowsタスクスケジューラが0x41301を表示し続ける

次の.ps1ファイルを作成しました。

[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}
$request = [System.Net.WebRequest]::Create("https://localhost/")
$response = $request.GetResponse()
$response.Close()

windowsサーバー2012 r2タスクスケジューラ内でタスクを設定して、上記のps1ファイルを呼び出します。このタスクを手動で実行しますが、 "0x41301"が表示され続けます。つまり、上記のPowerShellウィンドウ内のコードは、1秒未満で終了しますか?では、なぜタスクSchulerを使用してこのps1を呼び出すと、決して終了しないのですか?

-編集-これがエクスポートされるXMLです:-

<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.4" xmlns="http://schemas.Microsoft.com/windows/2004/02/mit/task">
  <RegistrationInfo>
    <Date>2016-02-09T00:35:11.5514762</Date>
    <Author>ad-services\user.service</Author>
  </RegistrationInfo>
  <Triggers>
    <CalendarTrigger>
      <Repetition>
        <Interval>PT5M</Interval>
        <Duration>PT30M</Duration>
        <StopAtDurationEnd>false</StopAtDurationEnd>
      </Repetition>
      <StartBoundary>2016-02-09T19:30:01</StartBoundary>
      <Enabled>true</Enabled>
      <ScheduleByDay>
        <DaysInterval>1</DaysInterval>
      </ScheduleByDay>
    </CalendarTrigger>
  </Triggers>
  <Principals>
    <Principal id="Author">
      <UserId>S-1-5-20</UserId>
      <RunLevel>HighestAvailable</RunLevel>
    </Principal>
  </Principals>
  <Settings>
    <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
    <DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries>
    <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
    <AllowHardTerminate>true</AllowHardTerminate>
    <StartWhenAvailable>false</StartWhenAvailable>
    <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
    <IdleSettings>
      <StopOnIdleEnd>true</StopOnIdleEnd>
      <RestartOnIdle>false</RestartOnIdle>
    </IdleSettings>
    <AllowStartOnDemand>true</AllowStartOnDemand>
    <Enabled>true</Enabled>
    <Hidden>false</Hidden>
    <RunOnlyIfIdle>false</RunOnlyIfIdle>
    <DisallowStartOnRemoteAppSession>false</DisallowStartOnRemoteAppSession>
    <UseUnifiedSchedulingEngine>false</UseUnifiedSchedulingEngine>
    <WakeToRun>false</WakeToRun>
    <ExecutionTimeLimit>P3D</ExecutionTimeLimit>
    <Priority>7</Priority>
  </Settings>
  <Actions Context="Author">
    <Exec>
      <Command>C:\Users\user.service\Documents\AppPoolActivation.ps1</Command>
    </Exec>
  </Actions>
</Task>
5
John John

私はこれが問題を示していると信じています:

  <Actions Context="Author">
    <Exec>
      <Command>C:\Users\user.service\Documents\AppPoolActivation.ps1</Command>
    </Exec>
  </Actions>

実行したいコマンドとして.PS1スクリプトを挿入するだけでなく、スクリプトが失敗したり、変な動作をしたりすることになります。 :)

代わりに、タスクで、実行する「プログラム/スクリプト」を次のように変更します。

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

タスクの「引数」フィールドを介してスクリプトを追加し、実行ポリシーの変更を含めます(必要な場合)。つまり:

-ExecutionPolicy Bypass -file "C:\Users\user.service\Documents\AppPoolActivation.ps1"

「開始」フィールドを変更して、スクリプトが存在するパスに一致させることもできます。つまり、C:\Users\user.service\Documents\

アクセスに関する問題が発生する可能性があるため、ユーザーのプロファイルフォルダーにスクリプトを保存しないでください。代わりに、スクリプトを保持するフォルダー(Usersフォルダーの外)を作成し、タスクの実行に使用されるユーザーアカウントに適切なアクセス権があることを確認します。

9

「ユーザーがログオンしているかどうかにかかわらず実行する」にタスクを設定していたため、この問題が発生しました。「ユーザーがログオンしているときにのみ実行する」に切り替えてテストしたところ、1つで一時停止していることに気付きました削除するのを忘れたバッチファイルの

私はこれがおそらく関連していないことを知っていますが、うまくいけば将来的に誰かを助けるでしょう!

0
Kyle

または単に「アクション」タブでプログラム/スクリプトを入力します:powershell Addarguments(optional):-NonInteractive -file "C:\ yourscript.ps1"

0
user881879