Головна » як » Geek School Дізнайтеся, як розширити PowerShell

    Geek School Дізнайтеся, як розширити PowerShell

    PowerShell пропонує два способи розширення оболонки. Можна скористатися прив'язками, які є бінарними і розроблені в повноцінній мові програмування на зразок C #, або можна використовувати модулі, які можуть бути двійковими, а також сценарієм.

    Обов'язково прочитайте попередні статті серії:

    • Дізнайтеся, як автоматизувати Windows за допомогою PowerShell
    • Навчання використанню командлетів у PowerShell
    • Навчання використанню об'єктів у PowerShell
    • Навчання форматування, фільтрації та порівняння в PowerShell
    • Дізнайтеся, як використовувати віддалене використання в PowerShell
    • Використання PowerShell для отримання інформації про комп'ютер
    • Робота з колекціями в PowerShell

    І залишайтеся з нами для решти серії цілий тиждень.

    Snapins

    Snapins так минулого року. Всі жарти в сторону, оснащення ніколи не потрапили до спільноти PowerShell, тому що більшість сценаристів не є розробниками, і ви можете писати лише моменти на мові, як C #. Тим не менш, є ще деякі продукти, які використовують оснащення, наприклад, Web Deploy. Для того, щоб побачити, які оснащення доступні для використання в оболонці, використовуйте таку команду:

    Get-PSSnapin -Зареєстровано

    Щоб скористатися командами, доданими за допомогою оснащення, спочатку потрібно імпортувати їх у свій сеанс, і ви можете зробити це так:

    Додати-PSSnapin-ім'я WDeploySnapin3.0

    На цьому етапі з'явиться повідомлення про помилку, якщо не встановлено прив'язку Web Deploy. Якщо ви його встановили, як я, то він буде імпортований у ваш сеанс. Щоб отримати список команд, доступних у підказці, можна просто скористатися командлетом Get-Command:

    Get-Command -Module WDeploy *

    Примітка: Технічно це не модуль, але з якоїсь причини вам все одно доведеться використовувати параметр Module.

    Модулі

    Модулі новіші і є шлях вперед. Вони можуть бути скриптовані за допомогою PowerShell, а також кодуватися мовою, подібною до C #. Більшість вбудованих команд організовано в модулі. Щоб переглянути список модулів у вашій системі, можна скористатися наступною командою:

    Get-Module -ListAvailable

    Оскільки продукти оновлюються, їхні колеги PowerShell переходять до модулів. Наприклад, у SQL використовувався snapin, але тепер він складається з модулів.

    Для використання модуля потрібно спочатку імпортувати його.

    Імпорт-модуль -Мабуля SQLASCMDLETS

    Ви можете використовувати той самий трюк, який ми використовували з оснащеннями, щоб переглянути всі команди, які модуль додав до оболонки.

    Отже, залишається питання: як PowerShell знає, які оснащення та модулі ви маєте у вашій системі? Добре, оснащення трохи болю і повинні бути встановлені. Частина процесу інсталяції включає створення декількох записів реєстру, на які дивиться PowerShell, щоб знайти інформацію про прив'язку. Модулі, з іншого боку, можуть бути зареєстровані в оболонці, просто розмістивши їх в одному з місць змінної середовища PSModulePath. Крім того, можна просто додати шлях до модуля до змінної середовища.

    ($ env: PSModulePath) .Split (“;”)

    Це виплюне вміст змінної. Зверніть увагу, що якщо у вас є встановлений модуль SQL, як він змінював змінну для включення розташування модуля SQL.

    Модуль автоматичного завантаження

    PowerShell 3 представив дивовижну нову функцію, яка містить декілька імен. Жоден з них не є офіційним, але “Модуль автоматичного завантаження” є найкращим його описом. В основному, це дозволяє використовувати командлети, які належать до зовнішнього модуля, без явного імпорту модуля за допомогою командлета Import-Module. Щоб побачити це, спочатку видаліть усі модулі з оболонки за допомогою наступної команди:

    Get-Module | Видалити-модуль

    Після цього можна перевірити, чи не завантажено жодного модуля, використовуючи наступне:

    Get-Module

    Тепер скористайтеся командлетом, який не знаходиться в основній бібліотеці. Тест-підключення хороший:

    Тест-підключення localhost

    Якщо ви знову перевіряєте завантажені модулі, ви побачите, що він дійсно завантажив модуль.

    Це все для сьогодні хлопців, приєднуйтесь до нас завтра ще.