我正在从我的 SharePoint 代码中以编程方式运行一个 powershell 脚本文件 (.ps1)。这是源代码:
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”文件
- 调用运行可执行文件以将“.docx”转换为“.pdf”文件的 powershell 脚本
- 将“.pdf”上传回 SharePoint 文档库
示例代码用于第二部分。它在控制台应用程序中完美运行,但在 SharePoint 解决方案中不起作用。错误是“对象未设置为对象的实例”。但是没有办法知道它指的是哪个对象。
最终使用 SharePoint Word 自动化服务。效果很好。多谢你们。