Geek School учится использовать командлеты в PowerShell
Если вы использовали ipconfig или ping через командную строку, вы на полпути к тому, чтобы стать ниндзя PowerShell. Присоединяйтесь к нам, когда мы обнаружим командлеты в этой установке Geek School.
Обязательно ознакомьтесь с нашей первой статьей, представляющей PowerShell, и следите за обновлениями до конца нашей серии всю неделю.
Анатомия командлета
В первой части серии мы увидели командлет, который выглядел примерно так:
Обновление-Help
Командлеты PowerShell имеют синтаксис глагола-существительного, который можно увидеть выше. Важно отметить, что существительное всегда в единственном числе, хотя командлет может возвращать более одного результата. Чтобы просмотреть список допустимых глаголов в PowerShell, вы можете использовать командлет Get-Verb.
Знание допустимых глаголов и запоминание единственного числа существительного действительно помогает угадывать имена командлетов. Например, предположим, что вы хотите получить список Сервисы и их статус - это верно, это так же просто, как Get-Service. Как вы думаете, мы бы получить список бега процессы - это верно, Get-Process сделает свое дело.
Get-Process
Это позволяет действительно легко работать с любой технологией. Например, если вы загрузили командлеты Exchange, мы могли бы легко получить список почтовых ящиков на сервере, используя:
Get-Mailbox
Однако есть исключение. Помимо Exchange, все другие специфичные для технологии команды требуют префикса. Например, если мы хотим получить пользователей, которые в данный момент входят в систему с помощью удаленного рабочего стола, мы набрали бы:
Get-RDUserSession
Который можно увидеть на скриншоте ниже.
Примечание. Этот снимок экрана был сделан на сервере Server 2012, поскольку там вы найдете большинство модулей, специфичных для технологии..
Некоторое время назад я прочитал статью Дона Джонса, крестного отца PowerShell, в которой он объяснил, что Exchange поставляется до того, как этот префикс был добавлен в командлеты, поэтому он никогда не реализовывал их и никогда не будет.
Псевдонимы
Еще одна особенность, с которой поставляется PowerShell, - это возможность иметь несколько способов запуска одной и той же команды - псевдонимы, если хотите. Самое удивительное в них то, что в них включено много команд, которые вы могли использовать в командной строке, а также некоторые псевдонимы Linux. Например, в PowerShell мы можем получить список каталогов, используя:
Get-ChildItem
Используется для использования командной строки? Не волнуйся, они тебя покроют.
У вас есть опыт работы с Linux? Они тебя там тоже прикрыли.
Когда вы писали сценарии в течение нескольких лет, вы склонны лениться и часто использовать псевдонимы, но это не помогает новичкам, которые собираются читать наш код. Чтобы увидеть, какая команда запускает псевдоним, вы можете использовать следующее:
Get-Alias -Name ls
С другой стороны, если вы чувствуете, что настало время активизировать вашу игру, вы можете использовать параметр Definition, чтобы получить все псевдонимы для командлета:
Get-ChildItem -Definition Get-ChildItem
Если вы пришли из какой-то другой среды, вы можете добавить свои собственные псевдонимы, выполнив следующие действия:
New-Alias -Имя icanhazfilez -Значение Get-ChildItem
Очевидно, вам нужно будет заменить «icanhazfilez» именем вашего нового псевдонима, а Get-ChildItem - командлетом, который вы хотите запустить из-под капота..
Стоит отметить, что при закрытии оболочки вы теряете все псевдонимы, которые вы определили. Вы можете обойти это, добавив их определение в ваш профиль скрипта.
Усеченные параметры
Windows PowerShell также позволяет обрезать имена параметров до точки, где они становятся неоднозначными, то есть до точки, когда PowerShell больше не может определить, о каком параметре вы говорите. Например:
Get-Service -Name 'Apple Mobile Device' -ComputerName localhost
Такой же как:
Get-Service -На Apple Mobile Device -Com localhost
Если вы случайно сделаете имена параметров слишком двусмысленными, вы получите ошибку.
Унаследованные Команды
Наконец, команды, которые вы знаете и любите, будут по-прежнему работать в PowerShell.
пинг www.google.com
Просто помните, что устаревшие приложения, такие как ping, выводят строку, и часто есть лучший способ сделать то же самое с помощью командлета PowerShell..
Вместо вывода длинной строки текста у нас теперь есть объект, который мы рассмотрим в завтрашнем выпуске Geek School..