по идее, Noun должен быть одинаковый, а сейчас семантика нарушена
Согласен, надо придерживаться одинакового Noun. Спасибо, поправим.
New-Account
от командлетов New- ждут, что они вернут объект. У вас он молчаливый. Лучше тогда переделать его на Add-
параметр Password не должен быть string, правильнее будет пару параметров Username и Password заменить на Credential
присоединяюсь к вопросу @exchange12rocks: почему -IsEnabled типа bool, а не -Enabled типа switch? Да и то же касается всех прочих bool.
состояние Enable традиционно управляется отдельными командлетами. Было бы неплохо добавить Enable-Account и Disable-Account
Add это добавление чего-то существующего, а не создание нового, поэтому в данной ситуации Verb верный. Насчет возврата созданного объекта - согласен. Добавим.
Это желательно, но не строгое правило. Думаю тут лучше сделать через Parameter Set возможность передавать Password как SecureString или передавать, как Вы справедливо указали, Username и Password как PSCredential.
Ответил в комментарии @exchange12rocks- это ошибка в документации, исправим.
Зачем этот вывод? — его потом приходится принудительно заглушать. При ошибке должно сформироваться исключение. При успехе должна быть "тишина". То же самое с Start-System и Restart-System
Соглашусь, можно убрать. Добавим в документацию пример с ошибкой и -ErrorAction
Судя по документации Set-HttpsCertificate и Add-HttpsCertificate делают одно и то же — задают единственный сертификат web-интерфейса. Или первый раз нужно делать только Add, а потом только Set?
Это особенность Redfish API сервера. В первый раз HTTPS сертификат нужно добавить, потом только заменить.
-PassThru Запрашивает выходные данные, если по умолчанию командлет их не выводит.
не запрашивает (интерактивно у пользователя), а возвращает изменённый объект
Вы правы, в документации неверное описание параметра PassThru. Исправим спасибо.
-AccountService Учетная запись сервиса. Принимает на вход результат выполнения командлета Get-AccountService (стр. 52).
а не наоборот: учётная запись сервиса — Service Account ?
Нет, тут ошибка в описании объекта. Это не учетная запись сервиса, а объект сервиса, отвечающего за управление пользователями, ролями, подключениями к службам каталогов и т.д... Исправим, спасибо.
Командлет Get-VirtualMedia возвращает информацию о подключенных виртуальных носителях.
-VirtualMedia Подключаемый виртуальный носитель информации. Принимает на вход результат выполнения командлета Get-VirtualMedia
зачем подключать (монтировать) уже смонтированное?
Тут возможно не достаточно подробно расписано. VirtualMedia - это виртуальное устройство для подключения образов дисков. Таких устройств на сервере может быть несколько. Устройство присутствует в независимости от того, смонтирован ли образ на это устройство или нет. Командлет Get-VirtualMedia, покажет доступные устройства, Mount-VirtualMedia - смонтрирует образ в конкретное устройство.
-DnsServers Настраиваемый клиент DNS-сервера.
наверное всё же «список DNS-серверов»?
Вы абсолютно правы, описание некорректно.
Я так же хочу выразить Вам нашу благодарность за внимательное чтение документации и на то, что указали нам на ошибки, недочеты и дополнения, которые могут быть полезны. Вы и @exchange12rocksдали замечательную обратную связь, нам есть над чем поработать, чтобы сделать продукт лучше. Спасибо еще раз.
Find-ServerSystems: в параметры, принимающие на вход IP-адреса, лучше принимать объекты типа [ipaddress]
Вы имеете ввиду тип System.Net.IPAddress? Думаю не стоит лишать пользователей возможностей передавать IP-адреса как строки, но думаю Вы правы и можно добавить отдельный Parameter Set который будет принимать параметры типа IPAddress.
Connect-Server: Почему вы назвали параметр ManagementAddress? В PowerShell принято называть его ComputerName. Также этот командлет появляется в примерах раньше, чем его полное описание.
Из практики, я встречал разные варианты именования параметров подключения к удаленному узлу. ComputerName использует в своих командлетах Microsoft. При разработке мы старались именовать параметры так, что бы имена были говорящими и отражали назначение параметра. Я не исключаю, что такие рекомендации существуют, не могли бы Вы поделится ссылкой?
Get-Connection: ClientOriginAddress Тип установленной операционной системы <- тут кажется напутали что-то
Спасибо большое за Вашу внимательность, тут действительно ошибка. "Тип установленной операционной системы" - это из другого PowerShell модуля.
Disconnect-Server - отсутствует параметр -Force - лучше добавить его для скриптов
В скриптах можно использовать -Confirm:$false, но в документации этот параметр не описан, это наше упущение, проведем повторное детальное ревью и внесем исправления.
Мы ни за кем не повторяли и не можем судить, прав кто-то или нет сделав выбор в пользу того или иного пути. В комментариях мы уже рассмотрели несколько вариантов, как можно решать вопросы с коллизиями на уровне модуля целиком или отдельных командлетов. Вы совершенно верно говорите про префикс, но у друго человека может возникнуть иная точка зрения, к примеру, ему может быть проще и удобнее работать с командлетами без префиксов и на то могут быть разные причины, а вопросы коллизий нескольких командлетов, если он с ними столкнется, ему удобнее решать точечно. Мы Вам очень благодарны за конструктивный диалог, это помогает нам лучше понять пользователей и сделать продукт удобнее. Спасибо.
Вариант скомбинировать бинарные библиотеки и модуль написанный на PowerShell рассматривался, возможно в будущем мы так и поступим, но на первом этапе решили остановится на полностью бинарном варианте, т.к. код, написанный на одном языке проще развивать и поддерживать. Плюс модуль ориентирован на одновременную работу с множеством серверов, что в случае с бинарным вариантом, дает при разработке больше гибкости, а также может положительно сказаться на производительности.
Почему, используем. Для того, чтобы модуль импортировался автоматически, его нужно положить в директорию, которая указана в PSModulePath. В этом случае, конечно либо нужно указание префикса в манифесте, либо в случае конфликтной ситуации, использовать командлет с явным указанием модуля, например 'Yadro.Automation.Server\Set-DnsServer'. Мы Вам очень благодарны за обратную связь, мы обязательно выложим версию с префиксом и обновим документацию.
На самом деле, это вопрос достаточно открытый. Пересечения по именованию командлетов вполне нормальная ситуация, поэтому при импорте модуля поддерживается указание префикса, если это необходимо, и в целом допускает правку манифеста, правда это конечно накладывает дополнительные неудобства, например в случае обновления версии. При использовании ОС Windows, вероятность конфликта действительно выше, ввиду достаточно обширного функционала, поставляемого вместе с ОС. К примеру, VMware PowerCLI в некоторых командлетах кофликтует с функционалом, поставляемым в Windows для управления Hyper-V.
Согласен, надо придерживаться одинакового Noun. Спасибо, поправим.
Add это добавление чего-то существующего, а не создание нового, поэтому в данной ситуации Verb верный. Насчет возврата созданного объекта - согласен. Добавим.
Это желательно, но не строгое правило. Думаю тут лучше сделать через Parameter Set возможность передавать Password как SecureString или передавать, как Вы справедливо указали, Username и Password как PSCredential.
Ответил в комментарии @exchange12rocks- это ошибка в документации, исправим.
Согласен, добавим. Спасибо.
Соглашусь, можно убрать. Добавим в документацию пример с ошибкой и -ErrorAction
Это особенность Redfish API сервера. В первый раз HTTPS сертификат нужно добавить, потом только заменить.
Вы правы, в документации неверное описание параметра PassThru. Исправим спасибо.
Нет, тут ошибка в описании объекта. Это не учетная запись сервиса, а объект сервиса, отвечающего за управление пользователями, ролями, подключениями к службам каталогов и т.д... Исправим, спасибо.
Тут возможно не достаточно подробно расписано. VirtualMedia - это виртуальное устройство для подключения образов дисков. Таких устройств на сервере может быть несколько. Устройство присутствует в независимости от того, смонтирован ли образ на это устройство или нет. Командлет Get-VirtualMedia, покажет доступные устройства, Mount-VirtualMedia - смонтрирует образ в конкретное устройство.
Вы абсолютно правы, описание некорректно.
Я так же хочу выразить Вам нашу благодарность за внимательное чтение документации и на то, что указали нам на ошибки, недочеты и дополнения, которые могут быть полезны. Вы и @exchange12rocksдали замечательную обратную связь, нам есть над чем поработать, чтобы сделать продукт лучше. Спасибо еще раз.
Вы имеете ввиду тип System.Net.IPAddress? Думаю не стоит лишать пользователей возможностей передавать IP-адреса как строки, но думаю Вы правы и можно добавить отдельный Parameter Set который будет принимать параметры типа IPAddress.
Из практики, я встречал разные варианты именования параметров подключения к удаленному узлу. ComputerName использует в своих командлетах Microsoft. При разработке мы старались именовать параметры так, что бы имена были говорящими и отражали назначение параметра. Я не исключаю, что такие рекомендации существуют, не могли бы Вы поделится ссылкой?
Спасибо большое за Вашу внимательность, тут действительно ошибка. "Тип установленной операционной системы" - это из другого PowerShell модуля.
В скриптах можно использовать -Confirm:$false, но в документации этот параметр не описан, это наше упущение, проведем повторное детальное ревью и внесем исправления.
Согласен, исправим. Спасибо.
Забыли звездочку, исправим. Спасибо.
Согласен, исправим. Спасибо.
В документации есть упущения и ошибки, обязательно все исправим. Спасибо.
Вы правы, там должен быть switch и это не единственный командлет, где в описании параметров допущена эта ошибка. Все исправим.
Еще раз спасибо Вам за внимательное чтение документации и что указали нам на все ошибки и недочеты.
Мы ни за кем не повторяли и не можем судить, прав кто-то или нет сделав выбор в пользу того или иного пути. В комментариях мы уже рассмотрели несколько вариантов, как можно решать вопросы с коллизиями на уровне модуля целиком или отдельных командлетов. Вы совершенно верно говорите про префикс, но у друго человека может возникнуть иная точка зрения, к примеру, ему может быть проще и удобнее работать с командлетами без префиксов и на то могут быть разные причины, а вопросы коллизий нескольких командлетов, если он с ними столкнется, ему удобнее решать точечно.
Мы Вам очень благодарны за конструктивный диалог, это помогает нам лучше понять пользователей и сделать продукт удобнее. Спасибо.
Вариант скомбинировать бинарные библиотеки и модуль написанный на PowerShell рассматривался, возможно в будущем мы так и поступим, но на первом этапе решили остановится на полностью бинарном варианте, т.к. код, написанный на одном языке проще развивать и поддерживать. Плюс модуль ориентирован на одновременную работу с множеством серверов, что в случае с бинарным вариантом, дает при разработке больше гибкости, а также может положительно сказаться на производительности.
Почему, используем. Для того, чтобы модуль импортировался автоматически, его нужно положить в директорию, которая указана в PSModulePath. В этом случае, конечно либо нужно указание префикса в манифесте, либо в случае конфликтной ситуации, использовать командлет с явным указанием модуля, например 'Yadro.Automation.Server\Set-DnsServer'.
Мы Вам очень благодарны за обратную связь, мы обязательно выложим версию с префиксом и обновим документацию.
На самом деле, это вопрос достаточно открытый. Пересечения по именованию командлетов вполне нормальная ситуация, поэтому при импорте модуля поддерживается указание префикса, если это необходимо, и в целом допускает правку манифеста, правда это конечно накладывает дополнительные неудобства, например в случае обновления версии. При использовании ОС Windows, вероятность конфликта действительно выше, ввиду достаточно обширного функционала, поставляемого вместе с ОС. К примеру, VMware PowerCLI в некоторых командлетах кофликтует с функционалом, поставляемым в Windows для управления Hyper-V.
Да, Вы правы. Стоило указать как импортировать модуль с префиксом и как задать префикс в манифесте. Добавим в статью. Спасибо.