2013-10-17 2 views
0

현재 저는 작은 DB의 덤프를 만들기 위해 powershell 스크립트를 자동화하고 있습니다. 데이터베이스는 회사 Sharepoint를 통해 액세스 할 수 있으며 해당 Sharepoint에서 내 보낸 IQY 파일을 활용하여 데이터베이스 내용을 읽습니다. 내가 (즉, 명령 줄에서 호출) 수동으로 스크립트를 실행하면 문제없이 작동하지만 시도하고 작업 스케줄러에서 스크립트를 시작할 때, 다음과 같은 예외가 발생합니다 :powershell IQY 덤프 스크립트가 실패합니다.

System.Reflection.TargetInvocationException 

라인 그 예외를 생성하는 것은 : 정확하고 $ 쿼리 생성

$의 XL은 새로운이 Excel.Application하여 ComObject입니다
$iqy = $xl.Workbooks.Open($query, 2, $true) 

에서, IQY 파일의 전체 파일 경로를 포함하는 문자열입니다.

내 구성에서는 공유 관리자에 액세스 할 수있는 로컬 관리자 사용자 (예약 된 스크립트를 시작해야하는 동일한 사용자)를 사용하여 Windows Server 2008 R2에서 스크립트를 실행하려고합니다. 저는 Powershell 3.0을 사용하고 있습니다. 셰어 포인트 관련 스냅인을로드하지 않습니다.

나는 Excel에서 IQY 파일 위치와 Sharepoint 자체에 "신뢰"를 부여 할 때 암시하는 유일한 대답을 발견했습니다. 그건 도움이되지 않았어. 예외도 셰어 포인트 문제를 지적하는 것처럼 보이지만 수동으로 시작할 때 스크립트가 잘 실행되기 때문에 셰어가 어떻게 될 수 있는지 이해할 수 없습니다. 작업 스케줄러의 복잡함이 누락 되었습니까?

도움을 주시면 감사하겠습니다.

답변

0

신경 쓰지 마라. 나는 답을 찾은 것 같다.

누구든지 동일한 문제가 발생하는 경우 사용자가 로그인했는지 여부에 관계없이 실행하도록 설정하면 Excel Com 개체에 작업 스케줄러에서 실행되지 못하게하는 버그가 나타납니다. 회피하려면 즉, 스크립트가 실행되어있는 시스템에서 다음이 개 폴더를 만들 :

(항상 32 비트)

C : \ WINDOWS \ system32를 \ 설정 \ systemprofile \ Dektop

(64 비트)

C : \ Windows \ SysWOW64 \ config \ systemprofile \ Desktop

폴더를 만든 후 예상대로 작동합니다.

출처 : http://social.technet.microsoft.com/Forums/windowsserver/en-US/aede572b-4c1f-4729-bc9d-899fed5fad02/run-powershell-script-as-scheduled-task-that-uses-excel-com-object?forum=winserverpowershell

관련 문제