gpt4 book ai didi

c# - 在 c# 中点采购 powershell 脚本不起作用

转载 作者:行者123 更新时间:2023-11-30 16:20:13 25 4
gpt4 key购买 nike

我有一个 powershell 脚本,比如:function2.ps1 有:

function try2
{
return "Hello"
}

然后在 C# 中,我有:

RunspaceConfiguration rsc = RunspaceConfiguration.Create();
Runspace rs = RunspaceFactory.CreateRunspace(rsc);
rs.Open();

RunspaceInvoke si = new RunspaceInvoke(rs);
PowerShell ps = PowerShell.Create();

ps.Commands.AddScript(". .\\function2.ps1");
ps.Invoke();

ps.AddCommand("try2");
ps.Invoke();

它给出一个 System.Managment.Automation.CommandNotFoundException 说 try2 不被识别为 cmdlet、函数、脚本文件的名称,等等等等。

这真的很棘手,我错过了什么? :)

更新:

function.ps1 位于:c:\function.ps1。

目前的做法是:

ps.Commands.AddScript(@"cd C:\; . .\function.ps1;try2");
ps.Invoke();

但还是失败了,更有趣的是:

ps.Commands.AddScript(@"cd C:\; . .\function222222222222222222.ps1;try2");
ps.Invoke();

虽然我 100% 确定函数 22222222222222222222.ps1 不存在,但不会给出错误。确定文件路径有问题......

[更新]

原来是因为powershell文件中引用程序集存在一些运行时错误:This assembly is builded by a runtime newer than the currently loaded runtime and cannot be loaded.

将target framework从4.0改成3.5后,发现hello打印出来了!所以错误不是关于调用脚本,而是关于脚本本身。抱歉造成混淆,谢谢大家!

最佳答案

我认为您需要指定 function2.ps1 的完整路径。 ".\function2.ps1"将只在当前目录中查找脚本,该目录是 C# 进程的初始工作目录设置的任何位置,除非您在 C# 代码中的某处更改了它。您也可以在脚本中更改它,例如:

ps.Commands.AddScript(@"cd <path>; . .\function2.ps1; try2"); 

关于c# - 在 c# 中点采购 powershell 脚本不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14510551/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com