Установка и управление модулями PowerShell

PowerShell logo

Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов в рунете Pyatilistnik.org. Ранее я вас научил производить установку Windows 11, показал где брать установочный образ. В данной новой ОС есть много новых командлетов PowerShell и еще больше дополнительных модулей, расширяющих функционал. Сегодня я вам покажу, как устанавливать и управлять модулями PowerShell, как их сохранять и переносить на другой компьютер. Думаю, что многие из вас найдут для себя много полезной информации.

Что такое модуль PowerShell?

Модуль PowerShell — это совокупность функций PowerShell или сгруппированного кода, сосредоточенного вокруг общей основной темы. Все командлеты и поставщики PowerShell добавляются модулем или оснасткой.

Получатели этих модулей могут добавлять команды, содержащиеся в модуле, в свои сеансы PowerShell, чтобы использовать их как встроенные команды. Чтобы успешно сориентировать все функции в модуле вокруг одной и той же концепции, необходимо следовать некоторым рекомендациям, таким как отношения подсказок имен. напр. модуль Active Directory содержит функции, которые так или иначе взаимодействуют с Active Directory. Кроме того, все существительные в именах функций начинаются с AD, поэтому определенные функции легче обнаружить с организованной структурой имени.

Различные типы модулей PowerShell

Существует 4 различных типа модулей PowerShell:

  • Скриптовые модули - Самый распространенный тип модуля, не требующий знания C#, в основном любые файлы PSM1, содержащие в основном функции и код, используемые разработчиками скриптов и администраторами.
  • Бинарные модули - Содержат скомпилированный код на основе сборки .NET Framework (DLL), используемый разработчиками командлетов для создания модулей, содержащих командлеты, поставщиков и т. д.
  • Модули манифеста - Скриптовые модули, содержащие манифест, например, с информацией об авторе и т. д.
  • Динамические модули - Специальный тип модуля, который никогда не записывается на диск и существует только в памяти. Элементы динамического модуля (функции/переменные) сразу же доступны в сеансе PowerShell, пока сеанс не будет закрыт.

Где хранятся модули PowerShell

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

$env:PSModulePath

  • C:\Windows\System32\WindowsPowerShell\v1.0\Modules
  • C:\Program Files\WindowsPowerShell\Modules (По умолчанию все установленные модули для всех пользователей помещаются в папку модуля)
  • C:\Program Files (x86)\VMware\Infrastructure\PowerCLI\Modules
  • C:\Users\Имя пользователя\Documents\WindowsPowerShell\modules (Например в случае с PSTerminalServices)

Где хранятся модули PowerShell

Установка модулей PowerShell

Установка модулей очень простой процесс. Чтобы найти установленные, но еще не запущенные модули, запустите теперь известную команду Get-Module -ListAvailable.

список доступных модулей PowerShell

Чтобы получить список только импортированных модулей в текущем сеансе, просто запустите Get-Module.

список только импортированных модулей

Далее при наличии на компьютере интернета произведем поиск нужного модуля, например VMware.PowerCLI. Для этого есть командлет Find-Module. Выполним команду:

Find-Module -Name VMware.PowerCLI

Find-Module в powershell

Можно найти модули с похожими именами. например все, что связано с Vmware.

Find-Module -Name VMware*

найти модули с похожими именами

Можно найти модуль по минимальной версии или по конкретной версии.

Find-Module -Name VMware.PowerCLI -MinimumVersion 12.5.0.19195797

Find-Module -Name VMware.PowerCLI -RequiredVersion 12.5.0.19195797

найти модуль по минимальной версии или по конкретной версии

Дополнительные ключи смотрите по ссылке - https://docs.microsoft.com/en-us/powershell/module/powershellget/find-module?view=powershell-7.2.

Далее найдя нужный модуль, установим его, выполните команду.

Install-Module -Name VMware.PowerCLI

установка модуля powershell

Еще можно объединять команды:

Find-Module -Name VMware.PowerCLI -MinimumVersion 12.5.0.19195797 | Install-Module

Дополнительные ключи смотрите по ссылке - https://docs.microsoft.com/en-us/powershell/module/powershellget/install-module?view=powershell-7.2

Как сохранить модули PowerShell

Бывают ситуации, когда у вас в системе нет интернета, а необходимость в модуле есть. Тут можно перенести заранее сохраненные модули на такую автономную системы, через флешку, или копирование по сети. Но для начала их нужно сохранить, для этого вы можете выполнить такую команду:

Save-Module -Name xRobocopy,Pscx -Path C:\Temp\Module-PowerShell

сохранение модуля powershell

После переноса не забываем импортировать модуль, и если потребуется, то подкрутить политику ExecutionPolicy. Чтобы импортировать удаленный модуль, сначала необходимо создать PSSession (через New-PSSession ). Следующим шагом является импорт модуля, доступного на удаленном устройстве.

Import-Module -Name ActiveDirectory -PSSession $AdminServer -Prefix ‚Rmt')

Чтобы удалить модуль, команда Remove-Module  выполняет эту работу. После удаления все команды, которые когда-то был добавлен модулем, удаляются из сеанса, это работает как реверсия импорта модуля. Обратите внимание, что из локальной сессии будет удален только модуль, но без удаления файлов модуля.  

Удаленное использование модуля с другого компьютера

Вам никто не мешает создать некий такой репозиторий модулей PowerShell на отдельной виртуальной машине и обращаться к ним удаленно. Установим для начала сессию с удаленным компьютером.

$session = New-PSSession -ComputerName w10-module

Удостоверимся, что на удаленном сервере есть нужные нам модули, через команду:

Get-Module -PSSession $session –ListAvailable

Импорт модуля PowerShell с удаленного компьютера

импортируем теперь в свою текущую сессию нужный модуль с удаленного сервера:

Import-Module -PSsession $session -Name VMware.PowerCLI

После завершите сеанс, когда закончите:

Remove-PSSession $session

Еще можно использовать командлет Invoke-Command. Тут вы подключаетесь к удаленному серверу и импортируете модуль.

$session = New-PSSession -ComputerName w10-module
Invoke-Command {Import-Module VMware.PowerCLI} -Session $session

Сохраним на локальный компьютер нужный нам модуль.

Export-PSSession -Session $s -CommandName *-PowerCLI* -OutputModule RemSQLServer -AllowClobber

Данная команда создаст на вашем компьютер новый PowerShell модуль VMware.PowerCLI (в каталоге C:\Program Files\WindowsPowerShell\Modules ). Сами командлеты при этом не копируются. Далее закройте сессию.

Remove-PSSession $session

Теперь его можно локально импортировать и использовать.

Как удалить модуль PowerShell

Для удаления модуля со всеми файлами есть командлет Uninstall-Module. Выполните команду:

Uninstall-Module -Name xRobocopy

Где найти сторонние модули и скрипты PowerShell?

Помимо предустановленных модулей самой Windows PowerShell, существует огромное количество сторонних модулей. Для поиска конкретных модулей я рекомендую PowerShellGallery. Он функционирует как центральный репозиторий для обмена и получения кода PoSh, такого как модули, скрипты и многое другое. В основном они распространяются через PSRepository, которые обычно представляют собой веб-серверы, на которых можно публиковать файлы, тогда как эти PSRepos можно размещать у себя или использовать с помощью онлайн-опций, таких как PowerShellGallery. Get-PSRepository  откроет список доступных PSRepositories, помеченных информацией о том, публикует ли источник код, одобренный Microsoft или нет ( trusted/untrusted ). Чтобы изменить состояние доверия PowerShellGallery, например, используйте:

Get-PSRepository -Name PSGallery | Set-PSRepository -InstallationPolicy Trusted

Где найти сторонние модули и скрипты PowerShell

На этом у меня все. Мы с вами разобрали полный цикл управления модулями PowerShell. С вами был Иван Сёмин. автор и создатель IT портала Pyatilistnik.org.

Оцените статью
Настройка серверов windows и linux
Добавить комментарий

  1. Олег

    Здравствуйте, Иван!
    Подскажите, пожалуйста, как установить модуль для работы с VK api?
    Скачал vkapi.wrapper.1.2.5.nupkg, а как с ним поступить правильно — не ясно.
    Заранее спасибо за подсказку!

  2. Шремзер

    Можно экспортировать часть модулей с одного ПК на другой?
    С импортом всё понятно.

  3. Иван Семин автор

    Да можно