使用PowerShell类调用“[namespace.class] :: method”样式命令

时间:2010-03-27 12:24:08

标签: .net powershell

我通过.net创建了一个powershell对象来调用命令。 当我调用像'Get-Process'这样的常规命令时,我没有遇到任何问题:

ps.AddCommand("Get-Process").AddParameter(...).Invoke()

但是我无法使用语法“[namespace.class] :: method”调用.net方法,只是为了调用[System.IO.File] :: Exists(“c: \ boo.txt“)。

我试过

ps.AddCommand("[System.IO.File]::Exists(\"c:\\boo.txt\")").Invoke()

ps.AddCommand("[System.IO.File]::Exists").AddArgument("c:\\boo.txt").Invoke()

和其他一些人。 它总是抛出一个异常,表示无法识别指定的命令。

有一种方法可以调用这种类型的命令吗? 感谢

1 个答案:

答案 0 :(得分:2)

您需要将script添加到管道,因为调用.NET需要脚本,即.NET方法不被视为PowerShell commands,例如:

static void Main()
{
     PowerShell ps = PowerShell.Create();
     ps.AddScript(@"[IO.File]::Exists('C:\Users\Keith\foo.txt')");
     foreach (PSObject result in ps.Invoke())
     {
         Console.WriteLine(result);
     }
}