2010-03-04 2 views
2

SQL Server 2005 Agent Agent Job의 일부로 실행되는 복잡한 Powershell 스크립트가 있습니다. 스크립트는 정상적으로 작동하지만 "Start-Transcript $ strLogfile -Append"명령을 사용하여 모든 작업을 스크립트 파일에 기록합니다. 문제는 성적표가 항상 비어 있다는 것입니다. 스크립트가 시작 및 중단되었음을 나타내는 머리말과 꼬리말을 추가하지만 실제로 아무 것도 기록하지 않습니다. 예 :2005 년 SQL Agent Job에서 스크립트를 실행할 때 Powershell Transcript가 비어 있음 SQL Server

********************** 
Windows PowerShell Transcript Start 
Start time: 20100304173001 
Username : xxxxxxxxxxxx\SYSTEM 
Machine : xxxxx-xxx (Microsoft Windows NT 5.2.3790 Service Pack 2) 
********************** 
********************** 
Windows PowerShell Transcript End 
End time: 20100304173118 
********************** 

명령 프롬프트에서 스크립트를 실행하거나 시작 -> 모든 것이 잘 작동합니다. 여기에 내가 먼저 스크립트가 시스템 계정에서 실행 함께 할 수있는 뭔가가 있어야합니다 생각

powershell.exe -File "c:\temp\Backup\backup script.ps1" 

스크립트 (SQL 에이전트 작업의 운영 체제에 CmdExec 단계에서 사용되는 동일한 명령)을 실행하는 데 사용되는 명령입니다 (기본 SQL Agent 계정), SQL Agent를 개인 계정으로 변경하려고 시도해도 여전히 빈 녹음본이 생성되었습니다.

2005 SQL Server 에이전트 작업의 일부로 PowerShell 스크립트를 실행할 때 작동시킬 수있는 방법이 있습니까?

답변

0

Powershell 대본이 비어있는 이유는 아직 확실하지 않지만 해결 방법을 찾았습니다. SQL 작업의 CmdExec 단계에는 "출력을 기존 파일에 추가"옵션과 결합하여 Logfile.rtf 확장명을 사용하는 Powershell 스크립트와 거의 동일한 출력을 파일로 캡처하는 고급 옵션이 있습니다. 이렇게하면 Powershell 스크립트 ("out-host"로 파이프 된 원시 콘솔 실행 파일 포함)에서 호스트로 인쇄되는 모든 내용이 로그 파일에 캡처됩니다.

1

스크립트가 원시 명령 (콘솔 exes)을 사용하는 경우 Start-Transript는 해당 출력을 기록하지 않습니다. 이 문제는 logged on Connect이었습니다. 투표하실 수 있습니다. 모든 입력을 캡처하는 한 가지 방법은 cmd.exe를 사용하는 것입니다.

cmd /c powershell.exe -file "C:\temp\backup script.ps1" > backup.log 
+0

문제는 cmd.exe 또는 start -> run에서 실행할 때 스크립트가 정상적으로 작동한다는 것입니다. Powershell 2.0을 사용하고 실행 파일의 출력을 외부 호스트로 파이프합니다. –

1

sqlps.exe는 쓰기 호스트를 지원하는 방법을 포함하여 특정 방법을 구현하지 않습니다. 이것은 SQL Agent Powershell 작업 단계에서 sqlps.exe를 실행할 때 Start-Transcript를 사용하여 출력을 보지 못하는 이유를 설명합니다. 자세한 내용은 http://blogs.msdn.com/mwories/archive/2009/09/30/the-use-of-write-host-and-sql-server-agent-powershell-job-steps.aspx을 참조하십시오.

+0

알 수 있지만 sqlps.exe는 실제로 SQL 2008의 일부입니다. 여기서는 SQL 2005를 사용하고 SQL Agent 작업에서 CmdExec 단계의 일부로 powershell.exe를 호출합니다. 내 생각 엔 콘솔 기반 호스트에서 실행되지 않는 에이전트 작업과 관련이 있다는 것입니다. –