Поделиться через


Remove-Module

Удаляет модули из текущего сеанса.

Синтаксис

Remove-Module
      [-Name] <String[]>
      [-Force]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Remove-Module
      [-FullyQualifiedName] <ModuleSpecification[]>
      [-Force]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Remove-Module
      [-ModuleInfo] <PSModuleInfo[]>
      [-Force]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]

Описание

Командлет Remove-Module удаляет члены модуля, такие как командлеты и функции, из текущего сеанса.

Если модуль включает сборку (.dll), все элементы, реализованные сборкой, удаляются, но сборка не выгружается.

Этот командлет не удаляет модуль или не удаляет его с компьютера. Это влияет только на текущий сеанс PowerShell.

Примеры

Пример 1. Удаление модуля

Remove-Module -Name "BitsTransfer"

Эта команда удаляет модуль BitsTransfer из текущего сеанса.

Пример 2. Удаление всех модулей

Get-Module | Remove-Module

Эта команда удаляет все модули из текущего сеанса.

Пример 3. Удаление модулей с помощью конвейера

"FileTransfer", "PSDiagnostics" | Remove-Module -Verbose

VERBOSE: Performing operation "Remove-Module" on Target "filetransfer (Path: 'C:\Windows\system32\WindowsPowerShell\v1.0\Modules\filetransfer\filetransfer.psd1')".
VERBOSE: Performing operation "Remove-Module" on Target "Microsoft.BackgroundIntelligentTransfer.Management (Path: 'C:\Windows\assembly\GAC_MSIL\Microsoft.BackgroundIntelligentTransfer.Management\1.0.0.0__31bf3856ad364e35\Microsoft.BackgroundIntelligentTransfe
r.Management.dll')".
VERBOSE: Performing operation "Remove-Module" on Target "psdiagnostics (Path: 'C:\Windows\system32\WindowsPowerShell\v1.0\Modules\psdiagnostics\psdiagnostics.psd1')".
VERBOSE: Removing imported function 'Start-Trace'.
VERBOSE: Removing imported function 'Stop-Trace'.
VERBOSE: Removing imported function 'Enable-WSManTrace'.
VERBOSE: Removing imported function 'Disable-WSManTrace'.
VERBOSE: Removing imported function 'Enable-PSWSManCombinedTrace'.
VERBOSE: Removing imported function 'Disable-PSWSManCombinedTrace'.
VERBOSE: Removing imported function 'Set-LogProperties'.
VERBOSE: Removing imported function 'Get-LogProperties'.
VERBOSE: Removing imported function 'Enable-PSTrace'.
VERBOSE: Removing imported function 'Disable-PSTrace'.
VERBOSE: Performing operation "Remove-Module" on Target "PSDiagnostics (Path: 'C:\Windows\system32\WindowsPowerShell\v1.0\Modules\psdiagnostics\PSDiagnostics.psm1')".

Эта команда удаляет модули BitsTransfer и PSDiagnostics из текущего сеанса.

Команда использует оператор конвейера (|) для отправки имен Remove-Moduleмодулей в . Он использует подробный общий параметр для получения подробных сведений об удаленных элементах.

Подробные сообщения показывают удаленные элементы. Сообщения различаются, поскольку модуль BitsTransfer включает сборку, реализующую его командлеты, и вложенный модуль с его собственной сборкой. Модуль PSDiagnostics включает файл скрипта модуля (.psm1) для экспорта функций.

Пример 4. Удаление модуля с помощью ModuleInfo

$a = Get-Module BitsTransfer
Remove-Module -ModuleInfo $a

Эта команда использует параметр ModuleInfo для удаления модуля BitsTransfer.

Пример 5. Использование события OnRemove

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

$OnRemoveScript = {
    # perform cleanup
    $cachedSessions | Remove-PSSession
}
$ExecutionContext.SessionState.Module.OnRemove += $OnRemoveScript

$registerEngineEventSplat = @{
    SourceIdentifier = ([System.Management.Automation.PsEngineEvent]::Exiting)
    Action = $OnRemoveScript
}
Register-EngineEvent @registerEngineEventSplat

Переменная $OnRemoveScript содержит блок скрипта, который очищает ресурсы. Зарегистрируйте блок скрипта, назначив его $ExecutionContext.SessionState.Module.OnRemove. Можно также использовать Register-EngineEvent для выполнения блока скриптов при завершении сеанса PowerShell.

Для модулей на основе скриптов вы добавите этот код в .PSM1 файл или поместите его в скрипт запуска, который указан в свойстве ScriptsToProcess манифеста модуля.

Параметры

-Confirm

Запрос подтверждения перед выполнением командлета.

Тип:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-Force

Указывает, что этот командлет удаляет модули только для чтения. По умолчанию Remove-Module удаляет только модули чтения и записи.

Значения ReadOnly и ReadWrite хранятся в свойстве AccessMode модуля.

Тип:SwitchParameter
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-FullyQualifiedName

Это значение может быть именем модуля, полной спецификацией модуля или путем к файлу модуля.

Если значение является путем, путь может быть полностью или относительным. Относительный путь разрешается относительно скрипта, содержащего инструкцию using.

Если значение является спецификацией имени или модуля, PowerShell выполняет поиск в PSModulePath для указанного модуля.

Спецификация модуля — это хэш-файл, имеющий следующие ключи.

  • ModuleName - Обязательный указывает имя модуля.
  • GUID - Необязательный атрибут указывает GUID модуля.
  • Также требуется указать по крайней мере один из трех приведенных ниже ключей.
    • ModuleVersion — задает минимальную допустимую версию модуля.
    • MaximumVersion — задает максимальную допустимую версию модуля.
    • RequiredVersion — указывает точную, требуемую версию модуля. Это нельзя использовать с другими ключами версии.
Тип:ModuleSpecification[]
Position:0
Default value:None
Обязательно:True
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-ModuleInfo

Задает объекты модулей, которые нужно удалить. Введите переменную, содержащую объект PSModuleInfo или команду, которая получает объект модуля, например Get-Module команду. Можно также передать объекты Remove-Moduleмодуля в .

Тип:PSModuleInfo[]
Position:0
Default value:None
Обязательно:True
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-Name

Задает имена модулей, которые нужно удалить. Можно использовать подстановочные знаки. Строки имен Remove-Moduleтакже можно передать в .

Тип:String[]
Position:0
Default value:None
Обязательно:True
Принять входные данные конвейера:True
Принять подстановочные знаки:True

-WhatIf

Показывает, что произойдет при запуске командлета. Командлет не выполняется.

Тип:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

Входные данные

String

Имя модуля можно передать этому командлету.

PSModuleInfo

Объект модуля можно передать в этот командлет.

Выходные данные

None

Этот командлет не возвращает выходные данные.

Примечания

PowerShell включает следующие псевдонимы для Remove-Module:

  • Все платформы:
    • rmo

При удалении модуля активируется событие, которое можно использовать для запуска кода очистки. Дополнительные сведения см . в примере 5.