C# 从SharePoint以编程方式运行Powershell脚本文件
我正在从SharePoint代码以编程方式运行powershell脚本文件(.ps1)。以下是源代码:C# 从SharePoint以编程方式运行Powershell脚本文件,c#,sharepoint,powershell,C#,Sharepoint,Powershell,我正在从SharePoint代码以编程方式运行powershell脚本文件(.ps1)。以下是源代码: using (new Impersonator("username", "domain", "password")) { using (RunspaceInvoke invoker = new RunspaceInvoke()) { invoker.Invoke("Set-ExecutionPolicy Unrestricted"); } string cmdArg
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();
}
}
使用(新的模拟程序(“用户名”、“域”、“密码”))
{
使用(RunspaceInvoke invoker=new RunspaceInvoke())
{
invoker.Invoke(“设置不受限制的ExecutionPolicy”);
}
string cmdArg=string.Format(@“C:\Office2Pdf\officetopdf.ps1{0}{1}”,
下载文件路径,上传文件路径);
Runspace Runspace=RunspaceFactory.CreateRunspace();
runspace.ApartmentState=System.Threading.ApartmentState.STA;
runspace.ThreadOptions=PSThreadOptions.UseCurrentThread;
Open();
Pipeline Pipeline=runspace.CreatePipeline();
pipeline.Commands.AddScript(cmdArg);
pipeline.Commands[0]。MergeMyResults(
PipelineResultTypes.Error,PipelineResultTypes.Output);
收集结果=pipeline.Invoke();
var error=pipeline.error.ReadToEnd();
runspace.Close();
如果(error.Count>=1)
{
字符串错误=”;
foreach(var错误中的错误)
errors=errors+“”+Error.ToString();
}
}
我正在做的是
最终使用了SharePoint Word自动化服务。效果很好。谢谢大家。听起来好像没有看到文件。您使用什么方法获取文件 它是网络路径和webdav协议
\\yoursite@ssl\davwwroot\site\library\filename
将工作,但必须建立连接
根据我使用powershell的经验,我必须让会话保持登录状态,这样才能正常工作。一旦该会话结束,它就会断开该连接 powershell脚本很长吗?如果不是,您应该尝试在您认为可能为空的变量周围放置一个标记。让他们使用消息中的变量名重新引发新异常。在哪一行引发异常?收集结果=pipeline.Invoke();结果对象包含错误消息