Существует несколько способов использования PowerShell в пользовательских приложениях. Прелесть механизма автоматизации PowerShell в том, что вам не нужно иметь дело с параметрами, форматированием вывода и множеством других вещей PITA, с которыми вам придется справиться самостоятельно. Чтобы бросить объект по конвейеру в PowerShell, вы переопределяете метод ProcessRecord и вызываете WriteObject
protected override void ProcessRecord()
{
// Get the current processes
Process[] processes = Process.GetProcesses();
// Write the processes to the pipeline making them available
// to the next cmdlet. The second parameter of this call tells
// PowerShell to enumerate the array, and send one process at a
// time to the pipeline.
WriteObject(processes, true);
}
Вы можете написать командлеты, которые позволяют администратору автоматизировать серверную часть приложения. Командлеты всегда являются функциональными единицами на основе задач с соглашением об именах глаголов. Например, Get-Process или Restart-Service. Командлеты делают одну вещь и делают это очень хорошо. Сочетание командлетов дает невероятные возможности.
Кроме того, если ваше приложение имеет какое-то хранилище данных, также можно написать провайдера, который позволил бы кому-то просматривать и / или управлять хранилищем данных с помощью cmds, таких как cd (set-location) и md (new-item). ). Поставщик - это то, что написала команда PS, чтобы вы могли перейти в реестр с помощью cd hklm: или в хранилище сертификатов с помощью cd cert:
Вы также можете разместить сам PowerShell в своем приложении.
На MSDN имеется некоторая полезная информация обо всех этих опциях
Учитывая интерес к поставщикам, вот несколько примеров , как создать поставщика PowerShell.
Было несколько обсуждений о дизайне и использовании набора командлетов или о предоставлении чего-либо с провайдером. При реализации поставщика вы также получаете несколько командлетов, таких как Get-item, New-item, Get-Location, Set-Location. Однако я обнаружил, что наличие некоторых командлетов для конкретных задач в дополнение к поставщику может быть очень полезным.