Geek School Узнайте, как расширить PowerShell
PowerShell предлагает два способа расширения оболочки. Вы можете использовать оснастки, которые являются только двоичными и разработаны на полноценном языке программирования, таком как C #, или вы можете использовать модули, которые могут быть как двоичными, так и основанными на сценариях..
Обязательно прочитайте предыдущие статьи серии:
- Узнайте, как автоматизировать Windows с помощью PowerShell
- Учимся использовать командлеты в PowerShell
- Изучение, как использовать объекты в PowerShell
- Обучение форматированию, фильтрации и сравнению в PowerShell
- Научитесь использовать Remoting в PowerShell
- Использование PowerShell для получения информации о компьютере
- Работа с коллекциями в PowerShell
И оставайтесь с нами до конца сериала всю неделю.
Snapins
Snapins так в прошлом году. Помимо шуток, оснастки никогда не завоевывали популярность в сообществе PowerShell, потому что большинство сценариев не являются разработчиками, и вы можете писать оснастки только на языке, таком как C #. Тем не менее, есть еще продукты, которые используют оснастки, например, Web Deploy. Чтобы увидеть, какие оснастки доступны для использования в оболочке, используйте следующую команду:
Get-PSSnapin-Зарегистрирован
Чтобы использовать команды, добавленные оснасткой, сначала нужно импортировать ее в сеанс, и вы можете сделать это следующим образом:
Add-PSSnapin -Name WDeploySnapin3.0
На этом этапе вы получите сообщение об ошибке, если у вас не установлена оснастка Web Deploy. Если он у вас установлен, как я, он будет импортирован в ваш сеанс. Чтобы получить список команд, доступных в оснастке, вы можете просто использовать командлет Get-Command:
Get-Command -Module WDeploy *
Примечание: Технически это не модуль, но по какой-то причине вам все равно придется использовать параметр Module.
Модули
Модули новее и путь вперед. Они могут быть написаны как с помощью PowerShell, так и написаны на языке C #. Большинство встроенных команд также организованы в модули. Чтобы увидеть список модулей в вашей системе, вы можете использовать следующую команду:
Get-Module -ListAvailable
По мере обновления продуктов их аналоги PowerShell переносятся в модули. Например, SQL раньше имел оснастку, но теперь он состоит из модулей.
Чтобы использовать модуль, сначала нужно его импортировать..
Модуль импорта - Имя SQLASCMDLETS
Вы можете использовать тот же трюк, который мы использовали с оснастками, чтобы просмотреть все команды, которые модуль добавил в оболочку.
Таким образом, остается вопрос: как PowerShell узнает, какие оснастки и модули установлены в вашей системе? Ну, оснастки - это немного больно, и их нужно устанавливать. Часть процесса установки включает создание нескольких записей реестра, которые PowerShell просматривает для поиска информации о оснастке. Модули, с другой стороны, можно зарегистрировать в оболочке, просто поместив их в одно из мест в переменной среды PSModulePath. В качестве альтернативы, вы можете просто добавить путь к модулю в переменную окружения..
($ ENV: PSModulePath) .split ( «;»)
Это будет выплевывать содержимое переменной. Обратите внимание, что если у вас установлен такой модуль, как SQL, то как он изменил переменную, добавив местоположение модуля SQL.
Модуль автозагрузки
PowerShell 3 представила потрясающую новую функцию, которая носит несколько имен. Ни один из них не является официальным, но «Автоматическая загрузка модуля» является лучшим описанием этого. По сути, он позволяет использовать командлеты, принадлежащие внешнему модулю, без явного импорта модуля с помощью командлета Import-Module. Чтобы увидеть это, сначала удалите все модули из вашей оболочки, используя следующую команду:
Get-Модуль | Remove-Module
Затем вы можете проверить, что у вас нет загруженных модулей, используя следующее:
Get-Module
Теперь используйте командлет, которого нет в базовой библиотеке. Test-Connection - хороший вариант:
Тест-соединение localhost
Если вы проверите ваши загруженные модули еще раз, вы увидите, что он действительно загрузил модуль.
На сегодня все, ребята, присоединяйтесь к нам завтра.