我有一个C#控制台程序,我想运行PowerShell命令NOT SCRIPTS,但无论我尝试在PowerShell运行空间中运行什么命令,都会收到错误,指出找不到cmdlet。它可以简单如下:
static void Main(string[] args)
{
try
{
using (Runspace runspace = RunspaceFactory.CreateRunspace())
{
runspace.Open();
PowerShell ps = PowerShell.Create();
ps.Runspace = runspace;
ps.AddCommand("(Get-Date).AddDays(1)");
var result = ps.Invoke();
Console.WriteLine(result);
}
}
catch (Exception ex)
{
Console.WriteLine("Error: " + ex.ToString());
}
}
我可以在PowerShell命令行输入此命令,它运行得非常好。我没有添加任何模块来运行它。我错过了什么?
答案 0 :(得分:4)
命令仅为Get-Date
。当您使用AddCommand时,它是预期的。例如,
ps.AddCommand("Get-Date").AddParameter("Format", "u").Invoke();
你有一个脚本,它不容易适合AddCommand(因为它不是一个)。改为使用Tty AddScript:
ps.AddScript("(Get-Date).AddDays(1)").Invoke();