2013-03-13 3 views
0

저는 SharePoint 코드에서 프로그래밍 방식으로 powershell 스크립트 파일 (.ps1)을 실행하고 있습니다.Powershell 스크립트 파일을 프로그래밍 방식으로 SharePoint에서 실행

using (new Impersonator("username", "domain", "password")) 
{ 
    using (RunspaceInvoke invoker = new RunspaceInvoke()) 
    { 
    invoker.Invoke("Set-ExecutionPolicy Unrestricted"); 
    } 

    string cmdArg = String.Format(@"C:\Office2Pdf\officetopdf.ps1 {0} {1}", 
    DOWNLOAD_FILE_PATH, UPLOAD_FILE_PATH); 

    Runspace runspace = RunspaceFactory.CreateRunspace(); 
    runspace.ApartmentState = System.Threading.ApartmentState.STA; 
    runspace.ThreadOptions = PSThreadOptions.UseCurrentThread; 
    runspace.Open(); 

    Pipeline pipeline = runspace.CreatePipeline(); 
    pipeline.Commands.AddScript(cmdArg); 

    pipeline.Commands[0].MergeMyResults(
    PipelineResultTypes.Error, PipelineResultTypes.Output); 

    Collection<PSObject> results = pipeline.Invoke(); 
    var error = pipeline.Error.ReadToEnd(); 
    runspace.Close(); 

    if (error.Count >= 1) 
    { 
    string errors = ""; 

    foreach (var Error in error) 
     errors = errors + " " + Error.ToString(); 
    } 
} 

내가 뭐하는 거지하는 변환하는 실행 파일을 실행하는 PowerShell 스크립트를 호출하여 SharePoint 문서 라이브러리

  • 에서 ".DOCX"파일을 다운로드

    1. 입니다 : 여기에 소스 코드는 ".DOCX"다시 셰어 문서 라이브러리에

    의 S은 ".PDF"를 업로드에 ".PDF"파일

  • 충분한 코드는 두 번째 부분을위한 것입니다. 콘솔 응용 프로그램에서는 완벽하게 작동하지만 SharePoint 솔루션에서는 작동하지 않습니다. 오류는 "개체가 개체의 인스턴스로 설정되지 않았습니다"입니다. 그러나 그것이 어떤 대상을 가리키는 지 알 길이 없습니다.

    SharePoint Word Automation Services를 사용하여 종료되었습니다. 꽤 잘 작동합니다. 고마워.

  • +0

    powershell 스크립트는 매우 길습니까? 그렇지 않다면 [try/catch]를 넣어야합니다 (http://blogs.technet.com/b/heyscriptingguy/archive/2010/03/11/hey-scripting-guy-march-11-2010.aspx). null 일 가능성이있는 변수 주변. 메시지에서 변수 이름을 사용하여 새 예외를 재현하게하십시오. – skeletank

    +0

    예외가 발생하는 행은 무엇입니까? – Machinegon

    +0

    컬렉션 결과 = pipeline.Invoke(); 결과 개체에 오류 메시지가 있습니다. – ronma

    답변

    0

    파일을 보지 못하는 것 같습니다. 어떤 방법으로 파일을 가져 오는 중입니까?

    네트워크 경로이며 webdav 프로토콜 \\[email protected]\davwwwroot\site\library\filename 이 작동하지만 연결이 설정되어야합니다.

    PowerShell 사용 경험으로 세션을 로그온 상태로 유지해야하며이 방법이 유용합니다. 세션이 끝나자 마자 그 연결은 끊어집니다.

    관련 문제