Лучшие практики разработки Powershell cmdlets

Я в настоящее время соединяю некоторый Powershell cmdlets. Создание их достаточно легко, но я не знаю, создаю ли я их приемлемым способом (так сказать).

Есть ли какие-либо инструкции/лучшие практики, за которыми нужно следовать для передающих данных в конвейер Powershell? В данный момент я на самом деле произвожусь отдельный объект типа DataSet - если бы какой-либо cmdlet хотел использовать его в нисходящем направлении тогда, то они должны были бы циклично выполниться по DataTables во что DataSet, затем цикл по DataRows в каждом DataTable.

Я предполагаю, что вопрос.... я идущий в p! ss кто-либо прочь путем выполнения этого? Или я должен производить данные, которые являются по сути набором строк?

Спасибо все заранее

- JT

11
задан 14 January 2009 в 13:20
поделиться

2 ответа

Приемлемо произвести независимо от того, что тип объекта лучше всего используется для представления то, что Вы выписываете - DataSet прекрасен абсолютно. Единственная потенциальная осторожность состоит в том, что v2 PowerShell может работать на уменьшенной версии Платформы.NET (такой как на Ядре Сервера), поэтому если это - потенциальный сценарий для Вашего cmdlets, необходимо соблюдать некоторую осторожность для проверки объекта, который Вы производите, существует в каждой системе, где Ваш cmdlet мог бы использоваться.

Однако конвейер работает лучше всего, когда он содержит наборы объектов; DataSet не является набором по сути. Другими словами, Вы хотите, чтобы нисходящий cmdlets смог получить один объект за один раз через конвейер, так, чтобы те cmdlets вручную не перечисляли через объект. Я не знаю много о точно, что Вы делаете - могло случиться так, что DataSet является совершенно соответствующим - но я обычно предпочитал бы видеть cmdlet цикл через DataSet внутренне, создавать его собственные объекты (так, чтобы каждый столбец в таблице стал свойством), и произведите те объекты к конвейеру. Это просто увеличивает число нисходящего потока cmdlets, который может использовать то, что Вы производите.

Простой тест должен передать вывод Вашего cmdlet по каналу к CSV экспорта. Если это работает (и это, вероятно, не было бы с DataSet), то Вы делаете правильную вещь обычно. Теперь, Вы, возможно, должны создать cmdlet, который производит DataSet, и Вы только предназначаете наверняка другой cmdlets, который Вы записали (которые используют DataSets) работать против того вывода. Ничто неправильно с этим. Гибкость Max является отдельными объектами, тем не менее, так как она позволяет всему ядру PowerShell cmdlets работать над Вашим выводом.

Надежда, которая помогает.

9
ответ дан 3 December 2019 в 07:39
поделиться

В MSDN есть замечательный набор рекомендаций по разработке командлетов , которые я нашел чрезвычайно полезными при разработке своих собственных. Они разбиты на три разных раздела:

7
ответ дан 3 December 2019 в 07:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: