모듈 정보
간단한 설명
PowerShell 모듈을 설치, 가져오기 및 사용하는 방법을 설명합니다.
자세한 설명
모듈은 cmdlet, 공급자, 함수, 워크플로, 변수 및 별칭과 같은 PowerShell 명령을 포함하는 패키지입니다.
명령을 작성하는 사용자는 모듈을 사용하여 자신의 명령을 구성하고 다른 사용자와 공유할 수 있습니다. 모듈을 수신하는 사람 모듈의 명령을 PowerShell 세션에 추가하고 기본 제공 명령처럼 사용할 수 있습니다.
이 항목에서는 PowerShell 모듈을 사용하는 방법을 설명합니다. PowerShell 모듈을 작성하는 방법에 대한 자세한 내용은 PowerShell 모듈 작성을 참조하세요.
모듈이란?
모듈은 명령의 패키지입니다. 세션의 모든 cmdlet 및 공급자는 모듈 또는 스냅인에 의해 추가됩니다.
모듈 자동 로드
PowerShell 3.0부터 PowerShell은 설치된 모듈에서 명령을 처음 실행할 때 모듈을 자동으로 가져옵니다. 이제는 설정 및 프로필 구성 없이도 모듈의 명령을 사용할 수 있으므로 컴퓨터에 모듈을 설치한 후에 모듈을 관리할 필요가 없습니다.
또한 모듈의 명령이 보다 쉽게 찾을 수 있습니다. 이제 cmdlet은 Get-Command
아직 세션에 없는 경우에도 설치된 모든 모듈의 모든 명령을 가져오므로 명령을 찾아서 가져오지 않고 사용할 수 있습니다.
다음 예제 각각은 포함된 모듈을 Get-Mailbox
세션으로 가져오게 합니다.
명령 실행
Get-Mailbox -Identity Chris
명령 가져오기
Get-Command Get-Mailbox
명령에 대한 도움말 보기
Get-Help Get-Mailbox
Get-Command
와일드카드 문자(*)를 포함하는 명령은 검색용으로 간주되며, 사용하지 않고 모듈을 가져오지 않습니다.
PSModulePath 환경 변수에 지정된 위치에 저장된 모듈만 자동으로 가져옵니다. cmdlet을 실행하여 다른 위치의 모듈을 Import-Module
가져와야 합니다.
또한 PowerShell 공급자를 사용하는 명령은 모듈을 자동으로 가져오지 않습니다. 예를 들어 WSMan: 드라이브(예: Get-PSSessionConfiguration
cmdlet)가 필요한 명령을 사용하는 경우 cmdlet을 실행 Import-Module
하여 드라이브를 포함하는 WSMan:
Microsoft.WSMan.Management 모듈을 가져와야 할 수 있습니다.
명령을 실행 Import-Module
하여 모듈을 가져오고 변수를 $PSModuleAutoloadingPreference
사용하여 모듈 자동 가져오기를 사용하도록 설정, 사용 안 함 및 구성할 수 있습니다. 자세한 내용은 about_Preference_Variables 참조하세요.
모듈 사용 방법
모듈을 사용하려면 다음 작업을 수행합니다.
- 모듈을 설치합니다. 대부분의 경우 이 작업은 자동으로 수행됩니다.
- 모듈에서 추가한 명령을 찾습니다.
- 모듈에서 추가한 명령을 사용합니다.
항목에서는 이러한 작업을 수행하는 방법에 대해 설명합니다. 또한 모듈 관리에 대한 유용한 정보를 제공합니다.
모듈을 설치하는 방법
모듈을 파일이 있는 폴더로 수신하는 경우 PowerShell에서 사용하기 전에 컴퓨터에 설치해야 합니다.
대부분의 모듈은 자동으로 설치됩니다. PowerShell에는 "코어" 모듈이라고도 하는 몇 가지 사전 설치된 모듈이 함께 제공됩니다. Windows 기반 컴퓨터에서 운영 체제에 포함된 기능에 cmdlet을 관리하기 위한 cmdlet이 있는 경우 해당 모듈이 미리 설치됩니다. 예를 들어 서버 관리자 역할 및 기능 추가 마법사 또는 제어판 Windows 기능 켜기 또는 끄기 대화 상자를 사용하여 Windows 기능을 설치하면 기능의 일부인 PowerShell 모듈이 설치됩니다. 다른 대부분의 모듈은 모듈을 설치하는 설치 관리자나 설치 프로그램에 함께 제공됩니다.
다음 명령을 사용하여 현재 사용자에 대한 모듈 디렉터리를 만듭니다.
New-Item -Type Directory -Path $HOME\Documents\WindowsPowerShell\Modules
전체 모듈 폴더를 Modules 디렉터리에 복사합니다. PowerShell뿐만 아니라 Windows Explorer 및 Cmd.exe 포함한 모든 메서드를 사용하여 폴더를 복사할 수 있습니다. PowerShell에서 cmdlet을 Copy-Item
사용합니다. 예를 들어 에서 Modules 디렉터리로 MyModule 폴더 C:\ps-test\MyModule
를 복사하려면 다음을 입력합니다.
Copy-Item -Path C:\ps-test\MyModule -Destination `
$HOME\Documents\WindowsPowerShell\Modules
원하는 어떤 위치에도 모듈을 설치할 수 있지만 기본 모듈 위치에 모듈을 설치하면 관리하기가 더 쉽습니다. 기본 모듈 위치에 대한 자세한 내용은 모듈 및 DSC 리소스 위치 및 PSModulePath 섹션을 참조하세요.
설치된 모듈을 찾는 방법
기본 모듈 위치에 설치되었으나 세션에 아직 가져오지 않은 모듈을 찾으려면 다음과 같이 입력하세요.
Get-Module -ListAvailable
세션으로 이미 가져온 모듈을 찾으려면 PowerShell 프롬프트에서 다음을 입력합니다.
Get-Module
cmdlet에 Get-Module
대한 자세한 내용은 Get-Module을 참조하세요.
모듈에서 명령을 찾는 방법
cmdlet을 Get-Command
사용하여 사용 가능한 모든 명령을 찾습니다. cmdlet의 매개 변수를 Get-Command
사용하여 모듈, 이름 및 명사별로 명령을 필터링할 수 있습니다.
모듈의 명령을 모두 찾으려면 다음과 같이 입력하세요.
Get-Command -Module <module-name>
예를 들어 BitsTransfer 모듈에서 명령을 찾으려면 다음을 입력합니다.
Get-Command -Module BitsTransfer
cmdlet에 Get-Command
대한 자세한 내용은 Get-Command를 참조하세요.
모듈에서 명령에 대한 도움말을 가져오는 방법
모듈에 내보내 Get-Help
는 명령에 대한 도움말 파일이 포함되어 있으면 cmdlet에 도움말 topics 표시됩니다. PowerShell에서 모든 명령에 대한 도움말을 가져오는 데 사용하는 것과 동일한 Get-Help
명령 형식을 사용합니다.
PowerShell 3.0부터 모듈에 대한 도움말 파일을 다운로드하고 도움말 파일에 대한 업데이트를 다운로드하여 사용되지 않도록 할 수 있습니다.
모듈의 명령에 대한 도움말을 보려면 다음과 같이 입력하세요.
Get-Help <command-name>
모듈에서 명령에 대한 도움말을 온라인으로 받으려면 다음을 입력합니다.
Get-Help <command-name> -Online
모듈에서 명령에 대한 도움말 파일을 다운로드하고 설치하려면 다음을 입력합니다.
Update-Help -Module <module-name>
자세한 내용은 Get-Help 및 Update-Help를 참조하세요.
모듈을 가져오는 방법
모듈을 가져오거나 모듈 파일을 가져와야 할 수 있습니다. 모듈이 PSModulePath 환경 변수로 지정된 위치에 설치되어 있지 않거나 모 $env:PSModulePath
듈이 폴더로 전달되는 일반적인 모듈 대신 .dll 또는 .psm1 파일과 같은 파일로 구성되는 경우 가져오기가 필요합니다.
가져온 모든 명령의 명사 이름에 고유한 접두사를 추가하는 Prefix 매개 변수와 같은 명령의 Import-Module
매개 변수를 사용할 수 있도록 모듈을 가져오거나, 모듈이 세션의 기존 명령을 숨기거나 바꾸는 명령을 추가하지 못하도록 하는 NoClobber 매개 변수를 가져올 수도 있습니다.
모듈을 가져오려면 cmdlet을 Import-Module
사용합니다.
PSModulePath 위치의 모듈을 현재 세션으로 가져오려면 다음 명령 형식을 사용합니다.
Import-Module <module-name>
예를 들어 다음 명령은 BitsTransfer 모듈을 현재 세션으로 가져옵니다.
Import-Module BitsTransfer
기본 모듈 위치에 없는 모듈을 가져오려면 명령에서 모듈 폴더에 대한 정규화된 경로를 사용합니다.
예를 들어 디렉터리의 TestCmdlets 모듈을 세션에 C:\ps-test
추가하려면 다음을 입력합니다.
Import-Module C:\ps-test\TestCmdlets
모듈 폴더에 없는 모듈 파일을 가져오려면 명령에 모듈 파일에 대한 정규화된 경로를 사용합니다.
예를 들어 디렉터리의 TestCmdlets.dll 모듈을 세션에 C:\ps-test
추가하려면 다음을 입력합니다.
Import-Module C:\ps-test\TestCmdlets.dll
세션에 모듈을 추가하는 방법에 대한 자세한 내용은 Import-Module을 참조하세요.
모듈을 모든 세션으로 가져오는 방법
명령은 Import-Module
모듈을 현재 PowerShell 세션으로 가져옵니다. 시작하는 모든 PowerShell 세션으로 모듈을 가져오려면 PowerShell 프로필에 명령을 추가 Import-Module
합니다.
프로필에 대한 자세한 내용은 about_Profiles를 참조하세요.
모듈을 제거하는 방법
모듈을 제거하면 모듈에서 추가한 명령이 세션에서 삭제됩니다.
세션에서 모듈을 제거하려면 다음 명령 형식을 사용합니다.
Remove-Module <module-name>
예를 들어 다음 명령은 현재 세션에서 BitsTransfer 모듈을 제거합니다.
Remove-Module BitsTransfer
모듈을 제거하는 작업은 모듈을 가져오는 작업과 반대입니다. 모듈을 제거해도 모듈이 제거되지는 않습니다. 자세한 내용은 Remove-Module을 참조하세요.
모듈 및 DSC 리소스 위치 및 PSModulePath
다음은 PowerShell 모듈의 기본 위치입니다. PowerShell 4.0부터 DSC가 도입되어 새 기본 모듈 및 DSC 리소스 폴더가 도입되었습니다. DSC에 대한 자세한 내용은 about_DesiredStateConfiguration 참조하세요.
시스템:
$PSHOME\Modules
또는 ($env:windir\System32\WindowsPowerShell\v1.0\Modules
) 시스템 모듈은 Windows 및 PowerShell과 함께 제공되는 모듈입니다.PowerShell 4.0부터 PowerShell Desired State Configuration(DSC)이 도입되었을 때 PowerShell에 포함된 DSC 리소스도 폴더의
$PSHOME\Modules\PSDesiredStateConfiguration\DSCResources
에$PSHOME\Modules
저장됩니다.현재 사용자:
$HOME\Documents\WindowsPowerShell\Modules
($env:UserProfile\Documents\WindowsPowerShell\Modules
)또는
$HOME\My Documents\WindowsPowerShell\Modules
($env:UserProfile\My Documents\WindowsPowerShell\Modules
)PowerShell 4.0 이전의 사용자 추가 모듈 위치입니다.
PowerShell의 PowerShell 4.0 이상 릴리스에서는 사용자가 추가한 모듈 및 DSC 리소스가 에 C:\Program Files\WindowsPowerShell\Modules
저장됩니다. 이 위치의 모듈 및 DSC 리소스는 컴퓨터의 모든 사용자가 액세스할 수 있습니다. DSC 엔진이 로컬 시스템으로 실행되고 와 같은 $home\Documents\WindowsPowerShell\Modules
사용자별 경로에 액세스할 수 없으므로 이 변경이 필요했습니다.
PowerShell 5.0부터 PowerShellGet 모듈과 커뮤니티 및 Microsoft에서 만든 리소스 Install-Module
의 PowerShell 갤러리 추가된 이 명령은 기본적으로 모듈 및 DSC 리소스를 C:\Program Files\WindowsPowerShell\Modules
설치합니다.
참고: 디렉터리에서 $env:Windir\System32
파일을 추가하거나 변경하려면 "관리자 권한으로 실행" 옵션을 사용하여 PowerShell을 시작합니다.
PSModulePath 환경 변수 $Env:PSModulePath
의 값을 변경하여 시스템의 기본 모듈 위치를 변경할 수 있습니다. PSModulePath 환경 변수는 Path 환경 변수에서 모델링되며 형식이 동일합니다.
기본 모듈 위치를 보려면 다음을 입력합니다.
$Env:PSModulePath
기본 모듈 위치를 추가하려면 다음 명령 형식을 사용합니다.
$Env:PSModulePath = $Env:PSModulePath + ";<path>"
명령의 세미콜론(;)은 목록에서 앞에 나오는 경로와 새 경로를 구분해줍니다.
예를 들어 디렉터리를 추가 C:\ps-test\Modules
하려면 다음을 입력합니다.
$Env:PSModulePath + ";C:\ps-test\Modules"
PSModulePathGet-Module
Import-Module
에 경로를 추가하면 명령에 해당 경로에 모듈이 포함됩니다.
설정한 값은 현재 세션에만 적용됩니다. 변경을 지속하려면 PowerShell 프로필에 명령을 추가하거나 제어판 System을 사용하여 레지스트리의 PSModulePath 환경 변수 값을 변경합니다.
또한 변경을 영구적으로 만들기 위해 System.Environment 클래스의 SetEnvironmentVariable 메서드를 사용하여 PSModulePath 환경 변수에 Path를 추가할 수도 있습니다.
PSModulePath 변수에 대한 자세한 내용은 about_Environment_Variables 참조하세요.
모듈 및 이름 충돌
세션에 이름이 동일한 명령이 두 개 이상 있을 경우 이름이 충돌합니다. 모듈의 명령이 세션의 명령 또는 항목과 동일한 이름을 가질 경우 모듈을 가져올 때 이름 충돌을 발생합니다.
이름 충돌로 인해 명령이 숨겨지거나 바뀔 수 있습니다.
숨김
명령 이름을 입력할 때 실행되는 명령이 아니고 명령을 시작한 모듈이나 스냅인의 이름으로 명령 이름을 정규화하는 것과 같은 기타 방법을 사용하여 실행할 수 있을 때 명령은 숨겨집니다.
대체됨
동일한 이름의 명령 파일로 덮어쓰였으므로 명령을 실행할 수 없는 경우 명령이 바뀝니다. 충돌을 유발한 모듈을 제거하더라도 세션을 다시 시작해야만 바뀐 명령을 실행할 수 있습니다.
Import-Module
는 현재 세션의 명령을 숨기고 바꾸는 명령을 추가할 수 있습니다. 또한 세션의 명령이 모듈에서 추가한 명령을 숨길 수 있습니다.
이름 충돌을 검색하려면 cmdlet의 All 매개 변수를 Get-Command
사용합니다. PowerShell 3.0부터 명령 Get-Command
이름을 입력할 때 실행되는 명령만 가져옵니다. All 매개 변수는 세션의 특정 이름을 가진 모든 명령을 가져옵니다.
이름 충돌을 방지하려면 cmdlet의 NoClobber 또는 접두사 매개 변수를 Import-Module
사용합니다. Prefix 매개 변수는 가져온 명령의 이름에 접두사를 추가하여 세션에서 고유하도록 합니다. NoClobber 매개 변수는 세션의 기존 명령을 숨기거나 바꾸는 명령을 가져오지 않습니다.
의 별칭, Cmdlet, 함수 및 변수 매개 변수 Import-Module
를 사용하여 가져오려는 명령만 선택하고 세션에서 이름 충돌을 일으키는 명령을 제외할 수도 있습니다.
모듈 작성자는 모듈 매니페스트의 DefaultCommandPrefix 속성을 사용하여 모든 명령 이름에 기본 접두사를 추가하여 이름 충돌을 방지할 수 있습니다. Prefix 매개 변수의 값이 DefaultCommandPrefix 값보다 우선합니다.
명령이 숨겨지더라도 명령을 시작한 모듈이나 스냅인의 이름으로 명령 이름을 정규화하여 명령을 실행할 수 있습니다.
PowerShell 명령 우선 순위 규칙은 세션에 이름이 같은 명령을 포함할 때 실행되는 명령을 결정합니다.
예를 들어 세션에 함수와 이름이 같은 cmdlet이 포함된 경우 PowerShell은 기본적으로 함수를 실행합니다. 세션에 이름과 형식이 같은 명령이 포함된 경우(예: 이름이 같은 두 개의 cmdlet) 기본적으로 가장 최근에 추가한 명령이 실행됩니다.
선행 규칙에 대한 설명과 숨겨진 명령을 실행하기 위한 지침을 비롯한 자세한 내용은 about_Command_Precedence 참조하세요.
모듈 및 스냅인
모듈 및 스냅인에서 세션에 명령을 추가할 수 있습니다. 모듈은 cmdlet, 공급자 및 함수를 비롯한 모든 유형의 명령과 변수, 별칭 및 PowerShell 드라이브와 같은 항목을 추가할 수 있습니다. 스냅인에서는 cmdlet과 공급자만 추가할 수 있습니다.
사용자 세션에서 모듈이나 스냅인을 제거하기 전에 다음 명령을 사용하여 제거할 명령을 결정합니다.
세션에서 cmdlet의 원본을 찾으려면 다음 명령 형식을 사용합니다.
Get-Command <cmdlet-name> | Format-List -Property verb,noun,pssnapin,module
예를 들어 cmdlet의 원본을 Get-Date
찾으려면 다음을 입력합니다.
Get-Command Get-Date | Format-List -Property verb,noun,module
PowerShell 스냅인에 대한 자세한 내용은 about_PSSnapins 참조하세요.
모듈 관련 경고 및 오류
모듈이 내보내는 명령은 PowerShell 명령 명명 규칙을 따라야 합니다. 가져오는 모듈이 이름 Import-Module
에 승인되지 않은 동사가 있는 cmdlet 또는 함수를 내보내면 cmdlet에 다음 경고 메시지가 표시됩니다.
경고: 일부 가져온 명령 이름에는 승인되지 않은 동사가 포함되어 있어 검색이 덜 가능할 수 있습니다. 자세한 내용을 보려면 Verbose 매개 변수를 사용하거나 승인된 동사 목록을 보려면 Get-Verb를 입력하세요.
이 메시지는 경고일 뿐입니다. 비준수 명령을 포함하여 전체 모듈을 계속 가져옵니다. 메시지가 모듈 사용자에게 표시되더라도 명명 문제는 모듈 작성자가 수정해야 합니다.
경고 메시지를 표시하지 않으려면 cmdlet의 DisableNameChecking 매개 변수를 Import-Module
사용합니다.
기본 제공 모듈 및 스냅인
PowerShell 2.0 및 PowerShell 3.0 이상의 이전 스타일 호스트 프로그램에서 PowerShell과 함께 설치된 핵심 명령은 모든 PowerShell 세션에 자동으로 추가되는 스냅인으로 패키지됩니다.
PowerShell 3.0부터 초기 세션 상태 API를 구현 InitialSessionState.CreateDefault2
하는 호스트 프로그램의 경우 Microsoft.PowerShell.Core 스냅인이 기본적으로 모든 세션에 추가됩니다. 모듈은 처음 사용할 때 자동으로 로드됩니다.
참고
cmdlet을 사용하여 New-PSSession
시작된 세션을 포함한 원격 세션은 기본 제공 명령이 스냅인으로 패키지되는 이전 스타일의 세션입니다.
다음 모듈(또는 스냅인)은 PowerShell과 함께 설치됩니다.
- Microsoft.PowerShell.Archive
- Microsoft.PowerShell.Core
- Microsoft.PowerShell.Diagnostics
- Microsoft.PowerShell.Host
- Microsoft.PowerShell.Management
- Microsoft.PowerShell.ODataUtils
- Microsoft.PowerShell.Security
- Microsoft.PowerShell.Utility
- Microsoft.WSMan.Management
- PackageManagement
- PowerShellGet
- PSDesiredStateConfiguration
- PSReadline
- PSScheduledJob
- PSWorkflow
- PSWorkflowUtility
- ISE
모듈 이벤트 로깅
PowerShell 3.0부터 모듈 및 스냅인의 LogPipelineExecutionDetails 속성을 로 설정하여 PowerShell 모듈 및 스냅인의 cmdlet 및 함수에 대한 실행 이벤트를 기록할 $True
수 있습니다.
그룹 정책 설정인 모듈 로깅 켜기를 사용하여 모든 PowerShell 세션에서 모듈 로깅을 사용하도록 설정할 수도 있습니다. 자세한 내용은 about_EventLogs 및 about_Group_Policy_Settings 참조하세요.
참고 항목
about_DesiredStateConfiguration