2012-12-11 4 views
2

SMTP를 통해 전자 메일을 보내는 PowerShell 스크립트가 있습니다. 스크립트는 Powershell ISE에서 제대로 실행되지만 작업 스케줄러에서는 실패합니다. 나는 Windows Server 2012를 사용하고 있습니다.이 서버에서 똑같은 설정을 사용하여 실행하는 다른 Powershell 스크립트가 있지만이 스크립트는 전자 메일을 보내지 않습니다. 작업 스케줄러에 표시되는 반환 코드 (0xFFFD0000)이며 이에 대한 정보를 찾을 수 없습니다. 가장 높은 권한으로 실행되도록 작업을 설정했으며 실행 정책이 RemoteSigned인지 확인했습니다. 아무도 전에 이걸 봤어?Powershell 스크립트는 Powershell에서 작동하지만 작업 스케줄러에서는 실패합니다.

$EmailFrom = "[email protected]" 
$EmailTo = "[email protected]" 
$Subject = "Email Subject" 
$Body = @" 
Person, 

Some message here 

Thanks, 
User 
"@ 

$SMTPServer = "smtp.domain.com" 
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 25) 
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("[email protected]", "password"); 
$SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body) 

업데이트 : 여기

powershell -f "c:\scripts\EmailTest.ps1" 

스크립트입니다 : 여기

은 작업의 명령입니다 나는이 문제를 해결할 수 있었다. 분명히 나는 ​​스크립트에 주석 처리 된 줄이 추가되었다. 왜 이것이 오류를 일으키는 지 잘 모르겠지만 일단 주석 처리 된 행을 제거하면 작업 스케줄러에서 제대로 실행됩니다. 코멘트는 다음과 같이 보면서 바로 위의 스크립트의 다른 $ EmailTo 선언 이하였다

#$EmailTo = "[email protected]" 
+0

예약 작업 내역을 확인하여 일부 정보를 볼 수 있습니다. 또는 스크립트 내에서 일부 출력 로그를 저장하거나 log.txt 파일에 캐치 정보를 시도하십시오. 전 비슷한 상황이지만 C#에서는 문제가 자격 증명과 관련되어 있습니다. – Shawn

답변

3

저도 같은 오류가 발생했다 궁극적으로 내가 다른 문제가 있었다 - 적용되지 않았습니다 디렉토리 설정에서 옵션 시작 .

기본적으로, 나는 .bat 파일을 실행 한 - C : \ 작업 \ process.bat

작업 디렉토리에 있었고 참조 그냥 파일 이름이었다 여러 PS1 스크립트를 참조이 .BAT 파일 (안 전체 디렉토리). 작업 스케줄러의 작업 탭에는 채워지지 않은 시작 (선택 사항) 필드가 있습니다. c : \ tasks로 설정하면 참조가 제대로 작동합니다.

+0

감사합니다, 내 문제가 못된. – flickerfly

5

비슷한 문제가있는 동안 다른 가능한 문제점을 발견했습니다. 대상 사용자로 Windows에 로그인하고 PowerShell에서 실행할 때 스크립트가 올바르게 실행되었지만 작업 스케줄러 작업으로 PowerShell 스크립트를 실행할 수 없습니다.

-ExecutionPolicy Bypass -File 'D:\full path\to\script.ps1' 

PowerShell을 묵인하고 작업 스케줄러가 작업을 즉시 해제 발사 : 나는 정상 PowerShell을 인용 규칙을 믿어 무엇을 사용하여 작업의 액션 인수 스크립트를 지명 할 때

작업 스케줄러는 지속적으로 0xFFFD0000 오류를 표시 할 것 문제를 즉시 밝혀

-ExecutionPolicy Bypass -File "D:\full path\to\script.ps1" 

명령 프롬프트로 삭제하고 전체 명령을 실행 : 및 문제없이 나는 이중에 하나에서 사용되는 따옴표를 변경할 때

D:\>C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -File 'D:\full path\to\script.ps1' 

Processing -File ''D:\full path\to' failed: The given path's format is not supported. Specify a valid path for the -File parameter. 

경로 앞에 두 개의 작은 따옴표를 사용하고 작은 따옴표 하나를 이상하게 사용합니다.

이야기의 도덕 : 스크립트의 전체 경로를 명령 줄 매개 변수로 PowerShell에 제공하면 큰 따옴표를 사용하십시오!

0

먼저 컴퓨터에 구성된 "ExecutionPolicy"를 확인해야합니다.이렇게이 링크를 https://technet.microsoft.com/en-us/library/hh847748.aspx

에 따라 기본 값을 확인하기 위해 내가이 명령을 사용하여 내 probleme 고정 : "인수를 추가"옵션에 을 내가 넣어 :

"-Executionpolicy 바이 패스 - 명령"& 'T : \ deleteOldMessages.ps1 ' "

1

1

관련 문제