Использование класса PowerShell для вызова команды в стиле «[namespace.class] :: method» - PullRequest
3 голосов
/ 27 марта 2010

Я создал объект powershell через .net для вызова команд. Когда я вызывал обычные команды типа «Get-Process», у меня не было проблем:

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

но я не могу вызвать метод .net с синтаксисом "[namespace.class] :: method", просто чтобы сделать пример для вызова [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 Ответ

2 голосов
/ 27 марта 2010

Вам необходимо добавить 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);
     }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...