在c#中运行基本的PowerShell命令出错,没有找到cmdlet

本文关键字:出错 cmdlet 命令 PowerShell 运行 | 更新日期: 2023-09-27 18:03:51

我有一个c#控制台程序,我想运行PowerShell命令而不是脚本,但无论我尝试在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命令行输入这个命令,它运行得很好。我不需要添加任何模块来运行它。我错过了什么?

在c#中运行基本的PowerShell命令出错,没有找到cmdlet

命令单独为Get-Date。当你使用AddCommand时,这就是它所期望的。例如,

ps.AddCommand("Get-Date").AddParameter("Format", "u").Invoke();
<<p>看到em> AddCommand (String)

你有一个脚本,它不容易适应AddCommand(因为它不是一个)。Tty AddScript代替:

ps.AddScript("(Get-Date).AddDays(1)").Invoke();