0
我想運行一個powershell腳本,我嘗試了兩種不同的方法,但從兩個方面都得到了異常。我需要添加哪些代碼或需要更改哪些內容?用C#運行Powershell腳本,例外
腳本內我試圖添加一個參數;
Param([string]$MainDoc="not")
首先計算策略與管道()和命令():
System.Management.Automation.Host.HostException: Cannot invoke this function because the current host does not implement it.
at System.Management.Automation.Internal.Host.InternalHostRawUserInterface.ThrowNotInteractive()
at System.Management.Automation.Internal.Host.InternalHostRawUserInterface.get_ForegroundColor()
at Microsoft.PowerShell.Commands.ConsoleColorCmdlet.get_ForegroundColor()
at Microsoft.PowerShell.Commands.WriteHostCommand.PrintObject(Object o)
at Microsoft.PowerShell.Commands.WriteHostCommand.PrintObject(Object o)
at Microsoft.PowerShell.Commands.WriteHostCommand.ProcessRecord()
at System.Management.Automation.Cmdlet.DoProcessRecord()
at System.Management.Automation.CommandProcessor.ProcessRecord()
與過程第二種方法()::
public static void RunPowerShell(string filePath, string parameterValue, string parameterName)
{
try
{
Process p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.FileName = filePath;
p.StartInfo.Arguments = " -" + parameterName + " " + parameterValue;
p.Start();
}
catch (Exception e)
{
System.Diagnostics.Debug.WriteLine(e.GetBaseException());
}
}
public static void RunPowerShell(string filePath, string parameterValue, string parameterName)
{
try
{
Runspace runspace = RunspaceFactory.CreateRunspace();
runspace.Open();
RunspaceInvoke runSpaceInvoker = new RunspaceInvoke(runspace);
runSpaceInvoker.Invoke("Set-ExecutionPolicy Unrestricted");
Pipeline pipeline = runspace.CreatePipeline();
Command command = new Command(filePath);
CommandParameter argParam = new CommandParameter(parameterName, parameterValue);
command.Parameters.Add(argParam);
pipeline.Commands.Add(command);
pipeline.Invoke();
runspace.Close();
}catch(Exception e){
System.Diagnostics.Debug.WriteLine(e.GetBaseException());
}
}
從該代碼的異常
此代碼給出例外:
System.ComponentModel.Win32Exception (0x80004005): The specified executable is not a valid application for this OS platform.
at System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo)
at System.Diagnostics.Process.Start()
我只是不明白,因爲它應該適用於我的操作系統平臺。
我錯過了什麼,應該改變什麼?這應該是一個簡單的任務,只用一個參數運行一個Powershell。
日Thnx提前
你試過從AnyCPU切換到x86或64位,看它是否運行? – Marco
也許這可以幫助你:https://blogs.msdn.microsoft.com/kebab/2014/04/28/executing-powershell-scripts-from-c/ – Kage
在第二種方法中'filePath'包含了什麼。如果它是腳本名稱,請將UseShellExecute設置爲true,或者使用PowerShell.exe對其進行前綴。 –