簡體   English   中英

c# - Windows PowerShell 工作流程不適用於 Process.Start() 或 Z3D265B4E1EEEF0DDF17881FA003B1CC8。

[英]c# - Windows PowerShell workflow does not work with Process.Start() or PowerShell.Create()

我嘗試從控制台應用程序運行 Windows PowerShell 工作流腳本。

方法一:

var processInfo = new System.Diagnostics.ProcessStartInfo()
{
            FileName = @"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe",
            Arguments = $"\"{scriptFile}\"",
            UseShellExecute = false               
};
System.Diagnostics.Process.Start(processInfo).WaitForExit();

方法二:

 RunspaceConfiguration runspaceConfiguration = RunspaceConfiguration.Create();
        using (Runspace runspace = RunspaceFactory.CreateRunspace(runspaceConfiguration))
        {
            runspace.Open();
            RunspaceInvoke runspaceInvoke = new RunspaceInvoke(runspace);
            Pipeline pipeline = runspace.CreatePipeline();
            pipeline.Commands.Add(new Command(scriptFile));
            var psObjects = pipeline.Invoke();
        }

以上兩種方法給了我錯誤 - Windows PowerShell 工作流在 Windows Z3D265B4E1EEEF0DDF17886-based xccZ 控制台中不受支持。 打開基於 x64 的 Windows PowerShell 控制台,然后重試

方法3:

WSManConnectionInfo connectionInfo = new WSManConnectionInfo();
connectionInfo.ShellUri = "Microsoft.PowerShell.Workflow";
Runspace runspace = RunspaceFactory.CreateRunspace(connectionInfo);
runspace.Open();
PowerShell powershell = PowerShell.Create();
powershell.AddCommand(scriptFile, true);
powershell.Invoke();

方法 3 的錯誤 -連接到遠程服務器 localhost 失敗,並顯示以下錯誤消息:訪問被拒絕

我對使用Set-PSSessionConfiguration有點猶豫,因為我不太了解它的后遺症。 我在 Windows Server 2012 上運行此代碼。

如何使用 c# 運行工作流程?

如問題中所述,我使用控制台應用程序運行 Windows PowerShell 工作流腳本。

我將應用程序的目標平台更改為“x64”,因為該機器具有 64 位操作系統。 有效。

之前的配置是“任何 CPU”

任何 CPU意味着 .NET 框架決定是在 x64 還是 x86 位中運行程序。 但在這種情況下,我試圖運行不是控制台應用程序一部分的 PowerShell 腳本。 因此,我相信我必須將目標平台指定為 x64。

我能夠在 Windows Server 2012 R2 和 ZAEA23489CE3AA9B630Z06ECDAC 方法 1 和 2(有問題提到)都有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM