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


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. Для получения подробной информации об удаляемых членах модуля используется общий параметр Verbose.

В подробных сообщениях отображаются удаленные элементы. Сообщения различаются, поскольку модуль 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

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

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Force

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

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

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-FullyQualifiedName

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

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

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

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

  • ModuleName - Обязательно Указывает имя модуля.
  • GUID - Дополнительные Указывает GUID модуля.
  • Также необходимо указать по крайней мере один из трех приведенных ниже ключей.
    • ModuleVersion — указывает минимальную допустимую версию модуля.
    • MaximumVersion — указывает максимально допустимую версию модуля.
    • RequiredVersion — указывает точную требуемую версию модуля. Его нельзя использовать с другими ключами версии.
Type:ModuleSpecification[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-ModuleInfo

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

Type:PSModuleInfo[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Name

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

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:True

-WhatIf

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

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

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

String

Вы можете передать имя модуля в этот командлет.

PSModuleInfo

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

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

None

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

Примечания

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

  • Для всех платформ.
    • rmo

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