PowerShell 5.1 - 현재 사용 중인 모듈을 제거하는 방법
우리는 일부 PowerShell 모듈을 하나의 배포 PowerShell 스크립트에 사용하고 있습니다.다음 명령을 사용하여 모듈(즉, XXXX)을 "C:\프로그램 파일\Windows PowerShell\Modules".
Install-Module -Name "XXXX" -AllowClobber -RequiredVersion "XXXX" -Repository "XXXX" -Scope AllUsers
이제 이 모듈의 기능을 사용하면 다음 명령을 사용하여 배포 스크립트가 끝날 때 제거합니다.
Remove-Module -Name "XXXX" -force
Uninstall-Module -Name "XXXX" -AllVersions -force
그러나 이 uninstall module 명령은 다음과 같은 오류를 발생시킵니다.
WARNING: The version '###' of module 'XXXX' is currently in use. Retry the operation after closing the
applications.
PackageManagement\Uninstall-Package : Module 'XXXX' is in currently in use.
At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1:2046 char:21
+ ... $null = PackageManagement\Uninstall-Package @PSBoundParameters
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (Microsoft.Power...ninstallPackage:UninstallPackage) [Uninstall-Packag
e], Exception
+ FullyQualifiedErrorId : ModuleIsInUse,Uninstall-Package,Microsoft.PowerShell.PackageManagement.Cmdlets.Uninstall
Package
이 문제를 해결할 방법을 아는 사람 있습니까?
문제는 기존 PowerShell 세션에서 모듈을 언로드하려고 해도 해당 세션에서 가능한 요소(예: 전역 변수 또는 상수)를 로드하여 모듈을 "잠근" 경우일 수 있습니다.Remove-Module).
잠겨 있지 않은지 확인하는 가장 깨끗한 방법은 PowerShell 세션을 종료하는 것입니다.나중에 "작업"을 수행하기 위해 세션을 계속 유지해야 하는 경우 모듈을 사용하기 직전에 새로운 PowerShell 세션(네스트 세션)을 시작해 보고 마지막에 종료합니다.
E Becker의 원래 답변에서 언급한 것처럼, 모듈이 세션에서 고착될 수 있습니다.PowerShell 세션을 닫고 새 세션에서 제거를 실행하면 도움이 됩니다.
자동로딩 처리
Keith가 언급한 것처럼 모듈이 자동으로 로드되면 모듈이 잠길 수 있습니다.프로필을 통해 발생하는 경우 추가-NoProfile제거 스크립트를 사용하면 다음과 같은 효과를 얻을 수 있습니다.
powershell -NoProfile -Command "Uninstall-Module X"
PSReadLine과 같은 일부 모듈은 이러한 세션에서도 로드되므로 추가 작업이 필요할 수 있습니다.-NonInteractive인수:
powershell -NoProfile -NonInteractive -Command "Uninstall-Module X"
아직 그런 경우를 찾지 못했지만 그래도 도움이 안 된다면 다음을 이용할 수 있습니다.(Get-InstalledModule -Name X).InstalledLocation모듈이 설치된 위치를 찾고 다른 방법으로 모듈을 제거합니다(마지막 수단).다른/이전 버전의 모듈이 PowerShell과 함께 번들로 제공된 경우 파손되지 않도록 수동으로 제거하는 것이 좋습니다.
해결 방법
- 이 경우에는 제거가 필요하지 않을 수도 있으며, 모듈을 설치하고 보관하며 다음과 같이 업데이트할 수도 있습니다.
Update-InstalledModule필요할때는? - 많은 모듈을 설치하지 않고 가져올 수 있습니다.
Import-Module.psd1 파일의 경로로 작동할 가능성이 높습니다.하지만, 그것은 그들을 이해할 수 없습니다.Remove-Module100% 일을 하다 - 보안이 우려되는 경우 서비스 사용자에 한해 모듈을 설치할 수 있습니다.
Install-Module -Scope CurrentUser, 및/또는 PowerShell 사용 제한을(를)Set-ExecutionPolicy하여 실행할 수 .-Scope논쟁도.
제 경우에는 이렇게 해결했습니다.
- PowerShell을 닫습니다.
- 파워쉘을 닫으세요.작업 관리자를 열고 powershell.exe/pwsh.exe와 같이 PowerShell의 배경 인스턴스를 찾습니다.
- C:에서 원하지 않는 모듈 폴더를 삭제합니다.\Users\${USER}\문서\PowerShell\모듈
2021년 말 현재 pwsh7.2와 PSFzf 모듈에 대해서도 동일한 문제에 직면해 있습니다.효과가 있었던 일:
- Close/Force 작업 관리자를 통해 PowerShell/pwsh의 모든 인스턴스를 닫습니다.
- 프로파일 없이 pwsh의 새 인스턴스를 시작합니다.Win+R >
pwsh -NoProfile - 실행.
Uninstall-Module -Name PSfzf -Force
언급URL : https://stackoverflow.com/questions/42626470/powershell-5-1-how-to-uninstall-module-which-is-currently-use
'programing' 카테고리의 다른 글
| mysql에 음수 값 저장 (0) | 2023.10.08 |
|---|---|
| jquery-ui 날짜 선택기 변경 z-index (0) | 2023.10.08 |
| 웹 응용 프로그램을 상대 파일 시스템 경로에 게시 (0) | 2023.10.08 |
| "[네이티브 코드]"가 무슨 뜻입니까? (0) | 2023.10.08 |
| Oracle OCI, 바인딩 변수 및 IDIN(1, 2, 3)과 같은 쿼리 (0) | 2023.10.08 |