0
我以編程方式從我的SharePoint代碼運行PowerShell腳本文件(.ps1)。這裏是源代碼:以編程方式從SharePoint運行Powershell腳本文件
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();
}
}
我在做什麼是
- 下載從SharePoint文檔庫
- 一「的.docx」文件調用運行在可執行文件進行轉換PowerShell腳本「.DOCX」 到 「.PDF」 文件
- 上載 「.PDF」 回SharePoint文檔庫
在S充足的代碼是第二部分。它在控制檯應用程序中完美工作,但不適用於SharePoint解決方案。錯誤是「對象未設置爲對象的實例」。但是沒有辦法知道它指向哪個對象。
結束使用SharePoint Word Automation Services。工作得很好。多謝你們。
PowerShell腳本很長嗎?如果沒有,你應該嘗試把[try/catch](http://blogs.technet.com/b/heyscriptingguy/archive/2010/03/11/hey-scripting-guy-march-11-2010.aspx)圍繞你認爲可能爲空的變量。讓他們重新拋出新消息中帶有變量名稱的新例外。 – skeletank 2013-03-13 13:14:26
在哪一行發生異常? – Machinegon 2013-03-14 15:12:52
集合 results = pipeline.Invoke();結果對象包含錯誤消息 –
ronma
2013-03-15 00:37:35