Windows 10 Pro에서 일일 작업을 실행하고 있습니다.
- 최대 절전 모드에서 컴퓨터 깨우기
- cmd.exe 시작, 명령 스크립트를 실행하여 파일을 네트워크 드라이브에 복사, 로그 파일 생성
- 컴퓨터 종료
작업 스케줄러 내에서 작업을 수동으로 시작하면 모든 것이 의도한 대로 실행됩니다.
컴퓨터를 최대 절전 모드로 전환하면 작업 스케줄러가 지정된 시간에 컴퓨터를 깨우지만 명령 파일(.cmd)이 전혀 실행되지 않는 것 같습니다. 로그 파일이 생성되지 않고, 파일이 복사되지 않으며, 컴퓨터가 종료되지 않습니다. 작업은 다음과 같이 표시됩니다."반환 코드 2147942401로 성공적으로 완료되었습니다."이는 16진수 0x80070001입니다. 이 오류 코드는 "불법적인 기능"을 나타내는 것 같지만 그것이 무엇인지 전혀 알 수 없습니다. 특히 말했듯이 수동으로 시작하면 작업이 제대로 실행되기 때문입니다.
다음은 작업 설정에 대한 개요입니다(독일어에서 번역되었지만 명확해야 함).
일반: 사용자 로그인에 관계없이 실행됩니다. 비밀번호를 저장하지 마세요. 최고 특권; Windows 10용으로 구성됨
작업: 프로그램 cmd.exe를 시작합니다. 인수: /c "cmd-script 경로\script.cmd >> logfile.txt"; 시작 위치: 비어 있음
조건: 컴퓨터 다시 활성화
설정: 필요한 경우 실행을 허용합니다. 실행이 실패하면 10분마다 다시 시작합니다. 3일 이상 실행되면 작업을 종료합니다. 요청 시 중지되지 않은 경우 활성 작업을 강제로 종료합니다. 새 인스턴스를 시작하지 마세요
백업을 수행하는 또 다른 작업이 있습니다.정확히정상적으로 실행되는 동일한 설정입니다(깨어나서 스크립트를 실행한 다음 컴퓨터를 종료합니다).
힌트를 주시면 감사하겠습니다. 질문도 환영합니다.
답변1
사실은 그렇지 않습니다. 그러나 가장 간단한 작업 스케줄러 설정을 사용했는데 이제는 작동합니다.
일반적인:
- 사용자가 로그인한 경우에만 사용
- 가장 높은 권한을 사용
- Windows 10에 맞게 구성
행동:
프로그램/스크립트: C:\Windows\System32\cmd.exe
인수:/c <your batch file with parameters>
정황:
- 컴퓨터 다시 활성화
설정:
- 필요한 경우 실행을 허용
- 시작을 놓친 경우 가능한 한 빨리 실행
- 작업이 실패하면 5분마다 다시 시작
- 실행이 3일을 초과하면 작업 종료
- 요청 시 중지되지 않으면 강제 종료
- 작업이 이미 실행 중인 경우 현재 인스턴스를 중지합니다.
이제는 몇 달 동안 매일 지정된 시간에 실행됩니다.
답변2
Powershell은 예약된 작업에 까다롭습니다. 나는 이것으로 많은 시간을 보냈습니다. 다음은 검증된 배치 파일을 사용하여 문제를 해결하는 데 사용하는 방법입니다.
중간 배치 파일을 생성하고 배치 파일이 powershell을 호출하도록 해보세요. 배치 파일을 사용하면 로그에 출력할 수 있는 여러 에코를 수행할 수 있습니다. 이를 통해 프로세스에 대한 전체 stdout/stderr을 볼 수 있습니다. 이는 문제를 더 자세히 해결하는 데 도움이 될 수 있습니다.
로그는 예약된 작업 인수에 추가하여 생성할 수 있습니다 > "<path_to_log_file>" 2>&1
.
답변3
나에게는 그 작업이 때로는 효과가 있을 때도 있고 때로는 그렇지 않을 때도 있었습니다. 예약된 작업 기록에 따르면, 실패하면 약 40초 동안 아무것도 하지 않고 실행된 것처럼 나타나며 완료됩니다 action "C:\windows\SYSTEM32\cmd.exe" with return code 2147942401
.
이 경우 그룹 정책 설정을 망칠 필요가 없었습니다.~일 것이다일하지만 항상 그런 것은 아닙니다(참조https://stackoverflow.com/questions/48343993/batch-file-from-scheduled-task-returns-code-2147942401/).
내 작업을 단순화하고, 다시 만들고, 재구성해도 문제가 해결되지 않았습니다.
나는 또한 내 배치 파일을 도살하고 표준 출력 리디렉션을 제거하여 로깅 기능을 포기하는 것을 고려했습니다. 또는 배치 파일을 전혀 사용하지 않고 실제 .exe 프로세스를 실행하면 됩니다. 이것이 해결책이었을 수도 있습니다.
나는 또한 "시작 시" 예약된 작업을 서비스로 대체하는 것을 고려했는데, 이는 그러한 사소한 문제에 대해 상당히 비용이 많이 드는 실험이었을 것입니다.
궁극적으로 예약된 작업에 지연을 추가하는 것을 고려하고 지연된 서비스처럼 내 작업을 구성하려고 했습니다. 서비스는 "자동" 또는 "자동(지연된 시작)"일 수 있습니다. "시작 시" 예약된 작업의 경우 지연을 추가하는 기능을 포함하여 고유한 개별 속성을 갖는 트리거입니다.
내 예약된 작업이 때때로 몇 밀리초 일찍 시작되어 일부 OS 서비스나 기능이 아직 사용 가능하지 않거나 허용되지 않은 것 같습니다. 트리거에 약간의 지연을 추가하면 문제가 해결됩니다.