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


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.