2011-09-07 4 views
4

Server1이라는 SQLServer에 대해 Invoke-SQLCmd를 실행하는 스크립트가 있습니다. 그에서 수집 된 데이터는 Server2에 대해 해고 된 다른 스크립트로 전달되고 결과는 서버 1의 테이블에 다시 삽입됩니다. 모든 Invoke-SQLCmd에서 sa를 가진 계정으로 -user -password를 사용했습니다 두 시스템 모두에 대한 사용 권한.SQL을 통해 Powershell 스크립트 실행

난 내 데이터가 테이블에 삽입되고, 모든 일이 잘 작동 명령 쉘에서 또는 Poershell ISE에서 스크립트를 실행하면, SQL 내에서 실행할 때 아무 일도 일어나지 않습니다. xp_cmdshell을 아래와 같이 사용할 때 출력이 없습니다 ("null"이 반환됩니다).

xp_cmdshell 'powershell.exe -file c:\script.ps1 -ExecutionPolicy Unrestricted' 

나는 SQLjob에 넣어 아직 여전히 두 상자에 관리자 권한 Server1의 내 테이블에서 작업 기록에 기록 된 결과가 없습니다없고 데이터가 내 도메인 계정에 연결하는 프록시 계정을 사용했다.

내가 뭘 잘못하고 있니? 이것이 ISE에서 작동한다면 반드시 작동해야합니다.

답변

4

나는이 일을 어떤 문제가 있었 심지어 블로그 게시물의 몇 작성하지 않은 :

http://sev17.com/2009/04/05/executing-powershell-in-sql-server

http://sev17.com/2010/11/29/executing-powershell-in-sql-server-redux

내가 다르게하고있어 한 가지가 - 명령을 사용을 매개 변수는 -file 대신 파일 이름을 사용하지만 차이가 있으면 안됩니다. 또한 파일 이름을 큰 따옴표로 묶으므로 스크립트 파일에 파일 경로에 공백이없는 경우에도 차이가 없어야합니다. 나는 당신의 스크립트가 무엇을하는지 볼 필요가 그 외부

. 예를 들어 다른 컴퓨터에 연결되어 있습니까? 'powershell -command get-command'와 같이 powershell에서 간단한 명령을 실행할 수 있습니까?

+0

링크가 끊어졌습니다. –

1

올바르게 스냅인을로드하지 않는 것 같습니다. 제 SQLsnapins가 첫 번째 세션을 위해로드되었지만 invoke-SQLcmd를 실행하는 두 번째 PS 스크립트로 전달하는 것은 아닙니다. 두 번째 스크립트는 cmdlet 스냅인을 추가했지만 충분하지 않았을 수 있습니다.

그것은 고정 여기에서 스크립트 블록을 추가했다하지만 어떤 이유로 든해야합니다. :/응답하는 것과

http://msdn.microsoft.com/en-us/library/cc281962.aspx

감사합니다. 내가 뭘 잘못

0

?

나는 제공된 예제에 오류가 있다고 생각합니다. 내가 예상 한 것 :

xp_cmdshell 'powershell.exe -ExecutionPolicy Unrestricted -file c:\script.ps1' 

때문에 : "는 파일 매개 변수 이름 다음에 입력 한 모든 문자가 스크립트 매개 변수 다음에 스크립트 파일 경로로 해석되기 때문에 파일이 명령의 마지막 매개 변수 여야합니다 과 그들의 가치. "

출처 : PowerShell.exe Command-Line Help

관련 문제