【发布时间】:2021-11-08 17:03:31
【问题描述】:
我从 C# 运行脚本:代码如下所示:
r.Open();
using (PowerShell ps = PowerShell.Create().AddScript(_scriptPath))
{
ps.Runspace = r;
ps.Invoke();
if (ps.HadErrors)
{
List<string> _items = new List<string>();
var errorMessage = new StringBuilder();
foreach (ErrorRecord err in ps.Streams.Error)
{
errorMessage.AppendLine(err.ToString());
}
_items.Add(errorMessage.ToString());
foreach (var i in _items)
{
MessageBox.Show(i);
}
}
}
在脚本中我尝试运行复制项,为此我需要一个路径:
脚本路径看起来像这样:
$ScriptPath = Split-Path $Script:MyInvocation.MyCommand.Path
使用 Write-Host 我得到了路径,如下所示:
C:\Program Files (x86)\some\random\Folder\File.ps1
使用 Ps.Streams.Error(在我的 C# 代码中)我收到以下错误消息。
术语“x86”未被识别为 cmdlet、函数、脚本文件或可执行程序的名称。 程序。检查名称的拼写,或者路径是否正确(如果包含),然后 重复这个过程。
我需要如何编写代码,以便 Powershell 了解我的路径?
【问题讨论】:
-
@vonPryz 编辑了我的帖子并提供了更多信息
-
@vonPryz 更新我的代码
-
AddScript需要脚本的内容,而不是脚本的路径。 -
$ScriptPath = "& '$ScriptPath'"? -
@iRon 你的回答。我发现,从 C# 调用脚本时会发生错误。脚本很好,它只是 Powershell,找不到“程序文件(x86)”路径。意味着脚本根本没有被执行,因为 Powershell 找不到它。
标签: c# powershell path script