2016-12-31 4 views
2

Скажем, я написал сценарий PowerShell, который включает в себя это: вводе командыПоследовательность Microsoft в PowerShell Командлет Параметр Именование

Get-ChildItem -Recurse 

Но вместо этого я написал:

Get-ChildItem -Re 

Чтобы сэкономить время. По прошествии некоторого времени, и я обновил версию PowerShell, Microsoft решила добавить параметр Get-ChildItem, называемый «-Return», который, например, возвращает True или False, в зависимости от того, найдены ли какие-либо элементы или нет.

В этом виртуальном сценарии у меня есть, чтобы изменить все мои прежние скрипты, чтобы убедиться, что скрипт будет функционировать должным образом? Я понимаю попытку Microsoft сохранить время ввода, но это моя забота, и поэтому я, вероятно, всегда попытаюсь написать полное имя параметра.

Если, конечно, вы ничего не знаете, я этого не делаю. Спасибо за ваше понимание!

ответ

11

Это звучит больше как декламация, чем вопрос, но ответить:

В этом виртуальном сценарии, у меня есть я редактировать все мои прежние сценарии, чтобы гарантировать, что скрипт будет работать, как ожидалось?

Да!

Вы должны всегда использовать полные имена параметров в сценариях (или любой другой фрагмент повторно используемого кода).

Автоматическое разрешение имен парциальных параметров, псевдонимов и других ярлыков отлично подходит для использования при использовании PowerShell в интерактивном режиме. Это позволяет нам запустить powershell.exe и сделать:

ls -re *.ps1|% FullName 

, когда мы хотим, чтобы найти путь ко всем сценариям в профиле. Отлично подходит для разведки!

Но если бы я, чтобы включить эту функциональность в сценарий, я хотел бы сделать:

Get-ChildItem -Path $Home -Filter *.ps1 -Recurse |Select-Object -ExpandProperty FullName 

не только по причинам, которые вы упомянули, но и для обеспечения согласованности и удобочитаемости - если мой коллега приходит и, возможно, не знакомы с ярлыками, которые я использую, он все равно сможет распознать значение и ожидаемый результат из конвейера.


Примечание: Есть в настоящее время threeopenissues на GitHub, чтобы добавить правила предупреждения для этого в PSScriptAnalyzer - Я уверен, что проект Сопровождающие хотел бы руку с этим :-)

+0

Спасибо за ваш ответ. Это не раскаяние, но я читал популярную книгу «Изучаю Windows PowerShell через месяц», и автор не указал это требование в скриптах. Он просто сказал, что вы можете написать короткий параметр и т. Д. Поэтому я подумал, что важно спросить, есть ли у Майкрософт что-либо сказать об этом, о котором я не слышал. Во всяком случае, то, что вы сказали, имеет большой смысл. Большое спасибо. –

+0

Я не могу найти никаких официальных ссылок, но каждый отдельный сотрудник Microsoft и MVP я обсуждал эту тему без согласования –

+0

Редактировать: автор книги, о которой я упоминал, всегда указывал полный параметр * при записи скриптов позже в этой главе. Я просто хотел исправить эту информацию, чтобы дать ему должный кредит. –

Смежные вопросы