我通过.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()
和其他一些人。 它总是抛出一个异常,表示无法识别指定的命令。
有一种方法可以调用这种类型的命令吗? 感谢
答案 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);
}
}