PowerShell: лучший способ обеспечить уникальность имени функции? - PullRequest
5 голосов
/ 07 апреля 2011

Как лучше всего обеспечить уникальность имени вашей функции PowerShell? Стандарт начиная с версии 1 состоит в том, чтобы вводить короткий уникальный идентификатор после глагола тире и перед существительным. Например, с моими инициалами я мог создать функцию Get-DWServer; это нормально, пока кто-то не создаст функцию в другом модуле для получения ссылки на объект в хранилище данных и не использует одно и то же имя функции. Двух или трех букв просто недостаточно, но более того, читать некрасиво.

Я бы предпочел иметь уникальный префикс *, похожий на пространства имен .NET. Это лучше для организации, проще на глаз и работает с завершением табуляции. И он расширяется изящно, чтобы вы могли назвать его DW.Get-Server или DW.Network.Get-Server.

Недостатком этого является то, что он запускается после правильной проверки глагола PowerShell при импорте модуля / Export-ModuleMember. Вы можете обойти это, указав DisableNameChecking во время импорта, но мне интересно, если это происходит неаккуратно и может быть плохо, если PowerShell 3 выходит с лучшим решением. Я знаю, что пуристы глагола PS (есть ли?) Будут жаловаться, что это, вероятно, «мешает открытию», но я не могу придумать лучшего варианта.

Что ты делаешь?

(* Вы можете ссылаться на экспортированную функцию, используя нотацию имя_модуля \ имя_функции, но это не будет работать с завершением табуляции и все равно не решит проблему уникальности имени функции).

1 Ответ

5 голосов
/ 08 апреля 2011

Я слышал, как Джеффри Сновер (изобретатель PowerShell) несколько раз говорил об этом, и он назвал это дилеммой, а не проблемой.Дилемму нужно решать, но она не может быть полностью решена.Проблема может быть решена.Как глагол PS «пурист», я бы сказал, что лучший способ справиться с этим - иметь двух или трехбуквенный префикс к вашим существительным.До сих пор этого было достаточно для многих широко распространенных наборов командлетов.IE, командлеты AD Quest против командлетов AD от Microsoft.Get-ADUser и get-qaduser.

Если вы используете модуль и хотите использовать свой собственный префикс, вы можете указать его с помощью

import-module mymodule -Prefix myPrefix

Я знаю, что это не тотодин ответ «серебряная пуля», но я бы сказал, что он работает в 95% случаев.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...