C# Powershell从C添加脚本和调用#不在命令行上显示结果

C# Powershell从C添加脚本和调用#不在命令行上显示结果,c#,powershell,C#,Powershell,我有下面的powershell脚本文件 C:\user\desktop\script1.ps1 脚本的内容如下所示: get-process 我正在尝试创建一个C#控制台应用程序,以在控制台上获取此脚本的输出。当我在C#外执行脚本时,它运行良好,但当我在C#内执行脚本时,它不会产生任何结果。我正在尝试使用addscript和invoke C#代码: 我希望在将来使用addscript,因为如果powershell脚本中有多个命令,那么我需要能够从C#执行脚本以获得所需的结果 我尝试了很多链接来

我有下面的powershell脚本文件

C:\user\desktop\script1.ps1

脚本的内容如下所示:

get-process
我正在尝试创建一个C#控制台应用程序,以在控制台上获取此脚本的输出。当我在C#外执行脚本时,它运行良好,但当我在C#内执行脚本时,它不会产生任何结果。我正在尝试使用addscript和invoke

C#代码:

我希望在将来使用addscript,因为如果powershell脚本中有多个命令,那么我需要能够从C#执行脚本以获得所需的结果

我尝试了很多链接来尝试研究,但似乎没有成功


有人能告诉我哪里出了问题。

尝试先加载脚本内容,然后将其传递给
AddScript
方法:

string script = File.ReadAllText(@"C:\Scripts\script1.ps1");

为什么要用字符串文本将斜杠加倍?这可能是您的问题。@TheIncorrigible1,我尝试用单斜杠删除双斜杠并执行,但仍然没有看到任何输出。我假设您混淆了示例,在
C:\Users\\Desktop
?@TheIncorrigible1中没有包含用户名,是的,这是正确的。您的代码没有明显的错误,所以我们无法诊断您的问题。如前所述,不要在逐字字符串(
@“…”
)中使用
\
\
,但对于文件系统路径,这种错误是良性的。另外请注意,
.AddScript()
,尽管名称不同,但它不是用于向脚本文件添加路径,而是用于添加PowerShell源代码片段-同样,鉴于路径字符串没有嵌入引号,在这种情况下,这不应该有什么不同。谢谢!这解决了我的问题。@user3807741:很高兴听到这解决了你的问题,但为了帮助未来的读者,我们需要了解原因,因为你自己的尝试(尽管在问题评论中提到了一些小问题)也应该奏效。那么:为什么这种方法会有所不同呢?脚本的字符编码有问题吗
File.ReadAllText()
采用UTF-8,而当Windows PowerShell读取脚本文件时,则采用系统的“ANSI”编码。这就是造成差异的原因吗?@mkelement0,很抱歉延迟响应。我今天才看到你的评论。实际上,我使用streamreader读取文件的内容,然后将其传递给addscript方法。成功了。不确定addscript为什么不自己读取文件的内容。
shell.addcommand("get-process");
string script = File.ReadAllText(@"C:\Scripts\script1.ps1");