PowerShell 명령을 실행하고 “The term is not recognized as the name of a cmdlet” 오류 메시지를 받은 적이 있나요? 여기에 주목해야 할 점이 있습니다: 문제는 모듈이 누락되었거나 가져오지 않았을 수도 있습니다. 심지어 현대의 PowerShell 버전에서도 모듈 작동 방식을 이해하는 것이 이러한 문제를 진단하고 해결하는 데 필수적입니다.
좋은 소식은 무엇일까요? 이 안내서는 PowerShell이 현재 가져온 모듈을 확인하고, 모듈을 가져오고, 제거하고, 다시 가져오는 방법을 숙달하는 데 필요한 모든 것을 다룹니다. 마지막에는 예기치 않은 오류를 해결하거나 사용자 정의 모듈을 작업할 때 PowerShell 모듈을 원활하게 관리하는 데 필요한 기술을 습득할 것입니다.
이제 다이빙을 시작하고 PowerShell 모듈이 작업 흐름을 최적화하는 데 도움이 되도록 해보세요!
가져온 모듈 확인
모듈이 제대로로 로드되지 않으면 PowerShell 명령이 암호화된 오류 메시지로 실패할 수 있습니다. 예를 들어, ActiveDirectory 모듈을 먼저 가져오지 않고 Get-ADUser를 실행하려고 하면 “명령을 찾을 수 없음” 오류가 발생합니다. 마찬가지로, Azure 명령을 사용하려면 세션에 Az 모듈이 있어야 합니다.
PowerShell은 해당 모듈을 가져와야만 명령이 예상대로 작동하고 해당 명령을 사용할 수 있습니다.
현재 가져온 모듈을 보려면 다음을 사용하십시오:
Get-Module
Get-Module을 실행하면 다음과 유사한 출력이 표시됩니다:
ModuleType Version Name ExportedCommands ---------- ------- ---- ---------------- Manifest 7.0.0.0 Microsoft.PowerShell.Management {Add-Computer, Add-Content, Checkpoint-Computer...} Manifest 7.0.0.0 Microsoft.PowerShell.Utility {Add-Member, Add-Type, Clear-Variable...} Script 2.0.0 PSReadline {Get-PSReadLineKeyHandler, Get-PSReadLineOption...} Binary 1.0.0.1 SmbShare {Get-SmbShare, Set-SmbShare, Remove-SmbShare...}
이는 PowerShell 세션에 현재 로드된 모든 모듈 목록을 보여주며, 그들의 유형 (Manifest, Script 또는 Binary), 버전 번호, 모듈 이름 및 제공하는 명령의 요약을 보여줍니다. ExportedCommands 열에서 각 모듈에서 사용 가능한 cmdlet을 보여줍니다.
다음으로 가져올 수 있는 모듈의 명령어를 살펴보세요:
Get-Module -Name SmbShare -ListAvailable | Select exportedcommands
이 명령어를 실행하면 SmbShare 모듈에서 사용할 수 있는 모든 명령어가 나열된 출력을 볼 수 있습니다. 예를 들어:
ExportedCommands ---------------- {Get-SmbShare, New-SmbShare, Remove-SmbShare, Set-SmbShare, Get-SmbShareAccess, Grant-SmbShareAccess, Block-SmbShareAccess, Revoke-SmbShareAccess, Get-SmbMapping}
이 출력은 SmbShare 모듈에서 사용할 수 있는 모든 cmdlet을 보여줍니다. 각 명령어는 SMB 공유 관리를 위한 특정 용도로 사용됩니다:
- Get-SmbShare: 시스템의 모든 SMB 공유를 나열합니다
- New-SmbShare: 새로운 SMB 공유를 만듭니다
- Remove-SmbShare: 기존의 SMB 공유를 삭제합니다
- Set-SmbShare: 기존 공유의 속성을 수정합니다
사용 가능한 명령어를 이해하면 작업에 적합한 도구를 선택하는 데 도움이 됩니다. 유사한 명령어를 사용하여 다른 모듈의 기능을 탐색할 수 있습니다.
모듈 자동 가져오기
PowerShell이 동적으로 모듈을 처리하는 방식을 보려면, 다음은 동적 모듈 로딩을 보여주는 예입니다:
PS> Get-Module ModuleType Version Name ExportedCommands ---------- ------- ---- ---------------- Manifest 7.0.0.0 Microsoft.PowerShell.Management {Add-Computer, Add-Content...} Manifest 7.0.0.0 Microsoft.PowerShell.Utility {Add-Member, Add-Type...} Script 2.0.0 PSReadline {Get-PSReadLineKeyHandler...} PS> Get-SmbShare PS> Get-Module ModuleType Version Name ExportedCommands ---------- ------- ---- ---------------- Manifest 7.0.0.0 Microsoft.PowerShell.Management {Add-Computer, Add-Content...} Manifest 7.0.0.0 Microsoft.PowerShell.Utility {Add-Member, Add-Type...} Script 2.0.0 PSReadline {Get-PSReadLineKeyHandler...} Binary 1.0.0.1 SmbShare {Get-SmbShare, Set-SmbShare...}
위에 표시된 것처럼, Get-SmbShare를 실행하면 PowerShell이 자동으로 SmbShare 모듈을 가져옵니다. 명령어를 실행한 후 이 모듈이 목록에 나타나는 것을 볼 수 있습니다.
모듈 제거 및 재가져오기
새 구성 테스트 또는 충돌 해결 시 메모리에서 모듈을 지워야 할 수도 있습니다. 그런 경우 걱정하지 마세요. PowerShell은 모듈을 제거할 수 있게 해주며, 이를 통해 필요에 따라 세션을 재설정하거나 새로 고칠 수 있습니다.
메모리에서 모듈을 제거하려면:
Remove-Module -Name SmbShare
Remove-Module
cmdlet은 메모리에서 모듈을 지우지만 시스템에서 제거하지는 않습니다. 모듈을 제거하는 것은 일상적인 사용에서는 드물지만 특정 시나리오에서는 유용합니다.
모듈을 수동으로 다시 가져오려면:
Import-Module -Name SmbShare
수동 가져오기는 문제를 해결하거나 맞춤 환경에서 작업할 때 도움이 될 수 있습니다.
변경 후 모듈 다시 가져오기
개발 중인 모듈 작업 중에는 변경 사항이 즉시 적용되지 않는 상황이 발생할 수 있습니다. 오래된 데이터나 구성 정보가 여전히 모듈에 로드되어 이와 같은 동작을 유발할 수 있습니다.
모듈을 다시 가져오면 PowerShell이 최신 버전을 사용하도록 보장됩니다. 개발 중인 모듈을 수정하는 경우, 반드시 다시 가져와야 합니다.
Remove-Module
와 Import-Module
를 모두 사용할 수 있으며, Force
매개변수를 사용하여 프로세스를 간소화할 수 있습니다:
Import-Module -Name SmbShare -Force
Force
매개변수는 모듈을 한 번의 단계로 언로드하고 다시 로드하여 개발 및 테스트 워크플로에 이상적입니다.
결론
이 가이드에서는 PowerShell 모듈을 관리하는 방법—가져오기 확인, 가져오기, 제거 및 다시 가져오기—에 대해 배웠습니다. 또한 PowerShell이 모듈을 동적으로 가져오는 방법과 사용자 정의 구성을 수동으로 문제 해결하거나 테스트하기 위해 로딩을 제어하는 방법을 탐색했습니다.
이제 이러한 기술을 적용하여 스크립트에서 사용자 정의 모듈을 실험해 보십시오. 모듈 개발을 탐색하고 Force
매개변수를 사용하여 변경 사항이 적용되도록 하십시오.
PowerShell 모듈을 활용하여 문제 해결, 스크립트 개발 및 전반적인 PowerShell 작업 흐름을 향상시키세요!
Source:
https://adamtheautomator.com/powershell-modules-guide-2/