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 |
Входные данные
Вы можете передать имя модуля в этот командлет.
Объект модуля можно передать в этот командлет по конвейеру.
Выходные данные
None
Этот командлет не возвращает выходные данные.
Примечания
PowerShell включает следующие псевдонимы для Remove-Module
:
- Для всех платформ.
rmo
При удалении модуля активируется событие, которое можно использовать для выполнения кода очистки. Дополнительные сведения см. в примере 5.