使用 C# 运行的 Powershell 无法调用 samba

Powershell run with C# cannot call samba

提问人:eddie4005 提问时间:8/31/2023 更新时间:8/31/2023 访问量:32

问:

我在 C# 中运行 Powershell 来执行命令时遇到问题。

powerShellProcess1 = new Process();

powerShellProcess1.StartInfo.FileName = "powershell.exe";
powerShellProcess1.StartInfo.RedirectStandardInput = true;
powerShellProcess1.StartInfo.RedirectStandardOutput = true;
powerShellProcess1.StartInfo.UseShellExecute = false;
powerShellProcess1.StartInfo.CreateNoWindow = true;
powerShellProcess1.StartInfo.Verb = "runas";
powerShellProcess1.OutputDataReceived += PowerShellProcess1_OutputDataReceived;
powerShellProcess1.Start();
powerShellProcess1.BeginOutputReadLine();

我如上所述运行Powershell并发送如下命令,但它没有执行。

string samba_loc = SambaLocationBox.Text + " -p ";
string com_port = "serial:" + COMPORT_1.Text + ":115200 -b ";
string set_info = "sama5d27-som1-ek -a sdmmc:0:1:0:8:4 -c ";
string file_loc = "write:" + FileLocationBox.Text + Environment.NewLine;
string powershell_cmd = String.Concat(samba_loc, com_port, set_info, file_loc);

powerShellProcess1.StandardInput.WriteLine(powershell_cmd);

从 C# 调用的 Powershell 可以很好地运行除 sam-ba.exe 之外的其他程序。 命令也执行得很好。 只有 sam-ba.exe 不运行。 (我使用的samba版本信息:sam-ba_v3.7-rc2-win32)

怀疑存在权限问题,我在管理员模式下配置了应用程序并运行 Powershell,但没有改进。

请告诉我我在做什么样的蠢事。

C# PowerShell 桑巴

评论

3赞 gunr2171 8/31/2023
启动 powershell 来执行程序而不是直接执行该程序是否有原因?您能否提供一个最小的可重复示例 - 例如,的价值是什么?powershell_cmd
0赞 eddie4005 8/31/2023
为了响应直接输入命令不方便的要求,从 C# 调用 Powershell 来配置 UI。“.\sam-ba.exe -p serial:COM11:115200 -b sama5d27-som1-ek -a sdmmc:0:1:0:8:4 -c write:.\sama5d27_emmc-202306252324-mmcblk0.direct” 目的是发送它,但即使只是将 .\sam-ba.exe 发送到 cmd,sam-ba.exe 甚至不起作用。
1赞 gunr2171 8/31/2023
“配置 UI”是什么意思?“甚至不起作用”是什么意思?你有退出代码吗?是你制作的东西还是你从操作系统/另一方那里得到的东西?您是否已成功在 C# 之外的终端中执行 exe?sam-ba.exe
0赞 eddie4005 8/31/2023
我在 C# 中创建了一个项目作为 Windows 窗体,将 Powershell 作为 Process 打开,并将其连接到 RichTextBox。而且,sam-ba 是为 Windows 分发的程序。最后,sam-ba.exe 在 C# 外部正常运行,但在内部运行时不执行任何操作。好像没有输入任何命令。
0赞 Jeanot Zubler 8/31/2023
我同意@gunr2171,并建议直接启动sam-ba过程(so等)。如果您不愿意这样做,那么您从 powershell 进程中获得什么样的输出?类似的东西可能会给你一些提示,实际问题是什么var proc = new Process(); proc.StartInfo.FileName = SambaLocationBox.Text;powerShellProcess1.StandardOutput.ReadLine()

答: 暂无答案