РАЗДЕЛ about_Modules КРАТКОЕ ОПИСАНИЕ Описание процедур установки, импорта и использования модулей Windows PowerShell ПОЛНОЕ ОПИСАНИЕ Модуль - это пакет команд Windows PowerShell, таких как командлеты, поставщики, функции, переменные и псевдонимы. Составляя команды, пользователи могут организовывать их с помощью модулей и передавать их другим пользователям. Получив такой модуль, пользователь может добавить содержащиеся в нем команды в сеанс Windows PowerShell и использовать их аналогично встроенным командам. В этом разделе описывается, как использовать модули Windows PowerShell. Сведения о процедуре создания модулей Windows PowerShell см. в разделе "Создание модуля Windows PowerShell" в библиотеке MSDN по адресу https://go.microsoft.com/fwlink/?LinkId=144916. ИСПОЛЬЗОВАНИЕ МОДУЛЯ Чтобы воспользоваться модулем, выполните следующие действия. 1. Установите модуль. (Обычно это выполняется автоматически.) 2. Импортируйте модуль в сеанс Windows PowerShell. 3. Найдите команды, добавленные модулем. 4. Выполните эти команды. В данном разделе описано, как выполнить эти задачи. В нем также содержатся другие полезные сведения об управлении модулями. УСТАНОВКА МОДУЛЯ Если модуль предоставлен в виде папки с файлами, необходимо установить его на компьютер, чтобы можно было импортировать его в Windows PowerShell. Обычно модули устанавливаются автоматически. В Windows PowerShell имеется несколько предустановленных модулей. В Windows Server 2008 R2 можно воспользоваться мастером добавления компонентов (в диспетчере сервера), чтобы автоматически установить выбранные компоненты. Многие модули поставляются с программой установки, выполняющей установку модуля. Для установки модуля, предоставленного в виде папки, выполните следующие действия. 1. Создайте каталог "Modules" для текущего пользователя, если он не существует. Для этого введите следующую команду: new-item -type directory -path $home\Documents\WindowsPowerShell\Modules 2. Полностью скопируйте папку модуля в каталог "Modules". Скопировать папку можно любыми средствами, включая проводник, программу Cmd.exe и Windows PowerShell. В Windows PowerShell для этого воспользуйтесь командлетом Copy-Item. Например, чтобы скопировать папку "MyModule" из каталога "C:\ps-test\MyModule" в каталог "Modules", введите следующую команду: copy-item -path c:\ps-test\MyModule -dest $home\Documents\WindowsPowerShell\Modules Установить модуль можно в любое местоположение, однако если всегда устанавливать их в местоположение модулей по умолчанию, ими проще управлять. Дополнительные сведения о местоположении модулей по умолчанию см. в разделе "Местоположения модулей и переменная PSModulePath". ПОИСК УСТАНОВЛЕННЫХ МОДУЛЕЙ Если модуль установлен, его можно импортировать в сеанс Windows PowerShell. Чтобы найти модули, установленные в местоположении модулей по умолчанию, в командной строке Windows PowerShell введите следующее: get-module -listAvailable Чтобы найти модули, уже импортированные в сеанс, в командной строке Windows PowerShell введите следующее: get-module Дополнительные сведения о командлете Get-Module см. в разделе Get-Module. ИМПОРТ МОДУЛЯ Чтобы выполнить команды, содержащиеся в модуле, импортируйте его в сеанс Windows PowerShell. Чтобы импортировать модули в текущий сеанс из местоположения модулей по умолчанию, используйте следующий формат команды: import-module <имя_модуля> Например, следующая команда импортирует модуль BitsTransfer в текущий сеанс. import-module BitsTransfer Чтобы импортировать модуль, не находящийся в местоположении по умолчанию, укажите в команде полный путь к папке этого модуля. Например, чтобы добавить в текущий сеанс модуль TestCmdlets, расположенный в папке "C:\ps-test", введите следующую команду: import-module c:\ps-test\TestCmdlets Чтобы получить дополнительные сведения о добавлении модулей в сеансы, см. Import-Module. ИМПОРТ ВСЕХ МОДУЛЕЙ В СЕАНС WINDOWS POWERSHELL. В операционных системах Windows 7 и Windows Server 2008 R2 задача "Импортировать все модули" открывает сеанс Windows PowerShell, содержащий все доступные модули и оснастки Windows PowerShell. Чтобы запустить сеанс Windows PowerShell со всеми доступными модулями и оснастками Windows PowerShell, выполните следующие действия. -- Щелкните правой кнопкой мыши значок Windows PowerShell на панели задач и выберите "Импортировать все модули". Примечание. В Windows Server 2008 R2 значок Windows PowerShell по умолчанию закреплен на панели задач. Впрочем, чтобы появилась задача "Импортировать все модули", необходимо один раз запустить Windows PowerShell. Чтобы импортировать в сеанс все доступные модули в других версиях Windows, в командной строке Windows PowerShell введите следующее: get-module -listAvailable | import-module ПОИСК КОМАНД В МОДУЛЕ После того как модуль импортирован в сеанс Windows PowerShell, можно использовать содержащиеся в нем команды. Чтобы найти добавленные модулем команды, в командной строке Windows PowerShell введите следующее: get-command -module <имя_модуля> Например, чтобы найти команды, добавленные модулем BitsTransfer, введите следующее: get-command -module BitsTransfer Дополнительные сведения о командлете Get-Command см. в разделе Get-Command. ПОИСК СПРАВКИ ПО КОМАНДАМ В МОДУЛЕ Если модуль содержит разделы справки по командам, которые он экспортирует, их можно вывести с помощью командлета Get-Help. Используйте команду такого же формата, как и для любого раздела справки Windows PowerShell. Чтобы найти раздел справки по содержащимся в модуле командам, в командной строке Windows PowerShell введите следующее: get-help <имя_команды> Чтобы вывести более подробную справку, введите следующее: get-help <имя_команды> -detailed Например, чтобы найти подробную справку о командлете Start-BitsTransfer, введите следующую команду: get-help Start-BitsTransfer -detailed Дополнительные сведения о модуле Get-Help см. в разделе Get-Help. УДАЛЕНИЕ МОДУЛЯ Если удалить модуль, добавленные им команды удаляются из сеанса. Чтобы удалить модуль из сеанса, используйте следующий формат команды: remove-module <имя_модуля> Например, следующая команда удаляет модуль BitsTransfer из текущего сеанса. remove-module BitsTransfer Операция удаления модуля отменяет операцию его импорта. При этом установка модуля не отменяется. Дополнительные сведения о командлете Remove-Module см. в разделе Remove-Module. ИМПОРТ МОДУЛЯ В КАЖДОМ СЕАНСЕ Команда Import-Module импортирует модули в текущий сеанс Windows PowerShell. Она затрагивает только текущий сеанс. Чтобы модуль импортировался в каждый новый сеанс Windows PowerShell, добавьте команду Import-Module в профиль Windows PowerShell. Дополнительные сведения о профилях см. в разделе about_Profiles. МЕСТОПОЛОЖЕНИЯ МОДУЛЕЙ И ПЕРЕМЕННАЯ PSMODULEPATH Для модулей Windows PowerShell предусмотрено два местоположения по умолчанию: одно для системы, другое для текущего пользователя. Для системы: $pshome\Modules (%windir%\System32\WindowsPowerShell\v1.0\Modules) Для текущего $home\Documents\WindowsPowerShell\Modules пользователя: (%профиль_пользователя%\Documents\WindowsPowerShell\Modules) - или: $home\My Documents\WindowsPowerShell\Modules (%профиль_пользователя%\My Documents\WindowsPowerShell\Modules) Примечание. Чтобы добавить или изменить файлы в каталоге %Windir%\System32 в операционных системах Windows Vista, Windows Server 2008 и Windows более поздних версий, запустите Windows PowerShell с параметром "Запуск от имени администратора". Чтобы изменить местоположения модулей по умолчанию для системы, измените значение переменной среды PSModulePath ($env:psmodulepath). Переменная среды PSModulePath основана на переменной среды Path и имеет тот же формат. Чтобы отобразить местоположения модулей по умолчанию, введите следующую команду: $env:psmodulepath Чтобы добавить местоположение модулей по умолчанию, используйте следующий формат команды: $env:psmodulepath = $env:psmodulepath + ";<путь>" Точка с запятой (;) в этой команде отделяет новый путь от предыдущего пути в списке. Например, чтобы добавить каталог "C:\ps-test\Modules", введите следующую команду: $env:psmodulepath + ";c:\ps-test\Modules" После добавления пути в переменную PSModulePath команды Get-Module и Import-Module действуют в том числе на модули в каталоге, на который указывает этот путь. Задаваемое значение влияет только на текущий сеанс. Чтобы сохранить изменение, добавьте эту команду в профиль Windows PowerShell или откройте диспетчер "Система" на панели управления и измените значение переменной среды PSModulePath в реестре. Дополнительные сведения о переменной PSModulePath см. в разделе about_Environment_Variables. МОДУЛИ И КОНФЛИКТЫ ИМЕН Конфликт имен происходит, когда в сеансе имеется несколько команд с одинаковым именем. При импорте модуля возникает конфликт имен, если содержащиеся в нем команды имеют такие же имена, как команды или элементы, уже имеющиеся в сеансе. Конфликты имен могут возникать в результате скрытия или замены команд. -- Скрытие. Скрытой называется команда, не выполняемая при вводе ее имени, но выполняемая другими способами (например, с указанием имени модуля или оснастки, из которой добавлена команда). -- Замена. Замененной называется команда, поверх которой записана команда с таким же именем. Даже если удалить модуль, являющийся причиной конфликта, выполнить замененную команду можно только после перезапуска сеанса. Команда Import-Module может добавить команды, скрывающие или заменяющие команды в текущем сеансе. Кроме того, команды в текущем сеансе могут скрыть команды, добавленные модулем. Чтобы предотвратить конфликт имен, используйте команду Import-Command с параметром Prefix, чтобы создать уникальные имена для импортируемых команд. Команду Import-Module также можно использовать с параметрами Alias, Cmdlet, Function и Variable, чтобы выбрать только те команды, которые требуется импортировать, исключив команды, вызывающие конфликт имен в сеансе. Даже если команда скрыта, можно выполнить ее, указав (помимо ее имени) имя модуля или оснастки, из которой она добавлена. Правила приоритета команд Windows PowerShell определяют, какая из конфликтующих команд запускается в сеансе, содержащем команды с одинаковыми именами. Например, если сеанс содержит функцию и командлет с одинаковым именем, по умолчанию Windows PowerShell выполняет функцию. Если сеанс содержит команды одинакового типа (например, два командлета) с одинаковым именем, по умолчанию выполняется команда, добавленная последней. Дополнительные сведения, включая пояснения правил приоритетов и инструкции по запуску скрытых команд, см. в разделе about_Command_Precedence. МОДУЛИ И ОСНАСТКИ Команды из модулей и оснасток можно добавлять в сеанс. Из модулей можно добавлять все типы команд, включая командлеты, поставщики и функции, а также элементы, такие как переменные, псевдонимы и диски Windows PowerShell. Из оснасток можно добавлять только командлеты и поставщики. Тогда как функции, псевдонимы, переменные и диски можно добавлять в сеанс путем ввода с клавиатуры или запуска добавляющего их скрипта, все командлеты и поставщики, содержащиеся в сеансе, добавляются только из модулей и оснасток. Прежде чем удалить модуль или оснастку из сеанса, с помощью следующих команд определите, какие команды будут при этом удалены. Чтобы определить, откуда командлет добавлен в сеанс, используйте следующий формат команды: get-command <имя_командлета> | format-list -property verb, noun, pssnapin, module Например, для поиска источника командлета Get-Date введите следующую команду: get-command get-date | format-list -property verb, noun, pssnapin, module Дополнительные сведения об оснастках Windows PowerShell см в разделе about_PSSnapins. CМ. ТАКЖЕ about_Command_Precedence about_PSSnapins Get-Command Get-Help Get-Module Import-Module Remove-Module