about_Modules

업데이트 날짜: 2014년 5월

적용 대상: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0

항목

about_Modules

간단한 설명

Windows PowerShell 모듈을 설치하고, 가져오고, 사용하는 방법에 대해 설명합니다.

자세한 설명

모듈은 cmdlet, 공급자, 함수, 워크플로, 변수 및 별칭과 같은 Windows PowerShell 명령을 포함하는 패키지입니다.

명령을 작성하는 사용자는 모듈을 사용하여 자신의 명령을 구성하고 다른 사용자와 공유할 수 있습니다. 모듈을 받는 사용자는 자신의 Windows PowerShell 세션에 모듈의 명령을 추가하여 기본 제공 명령처럼 사용할 수 있습니다.

이 항목에서는 Windows PowerShell 모듈을 사용하는 방법에 대해 설명합니다. Windows PowerShell 모듈을 작성하는 방법에 대한 자세한 내용은 MSDN(Microsoft Developer Network) 라이브러리의 "Windows PowerShell 모듈 작성"(https://go.microsoft.com/fwlink/?LinkId=144916)(영문)을 참조하세요.

모듈이란?

모듈은 명령의 패키지입니다. 세션의 모든 cmdlet 및 공급자는 모듈 또는 스냅인에 의해 추가됩니다.

모듈의 새로운 기능: 모듈 자동 로딩

Windows PowerShell 3.0부터 Windows PowerShell은 설치된 모듈에서 명령을 처음으로 실행할 때 자동으로 모듈을 가져옵니다. 이제 설정 및 프로필 구성 없이 모듈에서 명령을 실행할 수 있으므로 컴퓨터에 설치한 후 모듈을 관리할 필요가 없습니다.

또한 모듈의 명령이 보다 쉽게 찾을 수 있습니다. Get-Command cmdlet은 현재 세션에 있지 않더라도 설치된 모든 모듈의 모든 명령을 가져오므로 가져오지 않고도 명령을 찾아서 실행할 수 있습니다.

다음 명령을 실행하면 모듈이 세션으로 들어옵니다.

        #Run the command
        Get-Mailbox –Identity Chris  

        #Get the command
        Get-Command Get-Mailbox

        #Get help for the command
        Get-Help Get-Mailbox

와일드카드 문자(*)가 포함된 Get-Command 명령은 사용을 위한 것이 아니라 검색용이며 모듈을 가져오지 않습니다.

PSModulePath 환경 변수로 지정된 위치에 저장된 모듈만 자동으로 가져옵니다. 다른 위치의 모듈은 Import-Module cmdlet을 실행하여 가져와야 합니다.

또한 Windows PowerShell 공급자를 사용하는 명령은 모듈을 자동으로 가져오지 않습니다. 예를 들어 Get-PSSessionConfiguration cmdlet과 같이 WSMan: 드라이브가 필요한 명령을 사용하는 경우 WSMan: 드라이브를 포함하는 Microsoft.WSMan.Management 모듈을 가져오려면 Import-Module cmdlet을 실행해야 할 수 있습니다.

여전히 Import-Module 명령을 실행하여 모듈을 가져올 수 있으며 $PSModuleAutoloadingPreference 변수를 사용하여 모듈의 자동 가져오기를 사용하거나 사용하지 않도록 설정하고 구성할 수 있습니다. 자세한 내용은 about_preference_variables를 참조하세요.

모듈 사용 방법

모듈을 사용하려면 다음 작업을 수행합니다.

1. 모듈을 설치합니다. 대부분의 경우 이 작업은 자동으로 수행됩니다.

2. 모듈에서 추가한 명령을 찾습니다.

3. 모듈에서 추가한 명령을 사용합니다.

항목에서는 이러한 작업을 수행하는 방법에 대해 설명합니다. 또한 모듈 관리에 대한 유용한 정보를 제공합니다.

모듈 설치 방법

파일이 포함된 폴더로 모듈을 수신하는 경우 Windows PowerShell에서 사용하려면 먼저 컴퓨터에 설치해야 합니다.

대부분의 모듈은 자동으로 설치됩니다. Windows PowerShell은 "핵심" 모듈이라고도 하는 여러 가지 사전 설치된 모듈과 함께 제공됩니다. Windows 기반 컴퓨터의 경우 운영 체제에 포함되는 기능을 관리하는 cmdlet이 있는 경우 해당 모듈이 사전 설치됩니다. 예를 들어 서버 관리자의 역할 및 기능 추가 마법사 또는 제어판의 Windows 기능 켜기/끄기 대화 상자를 사용하여 Windows 기능을 설치하면 기능의 일부인 모든 Windows PowerShell 모듈이 설치됩니다. 다른 대부분의 모듈은 모듈을 설치하는 설치 관리자나 설치 프로그램에 함께 제공됩니다.

모듈 폴더를 설치하려면:

1. 현재 사용자에 대해 Modules 디렉터리가 아직 없으면 새로 만듭니다.

Modules 디렉터리를 만들려면 다음을 입력합니다.

               New-Item -Type Directory -Path $home\Documents\WindowsPowerShell\Modules

2. 전체 모듈 폴더를 Modules 디렉터리에 복사합니다.

메서드를 사용하여 Windows PowerShell뿐만 아니라 Windows 탐색기 및 Cmd.exe를 비롯한 폴더를 복사할 수 있습니다.

Windows PowerShell에서 Copy-Item cmdlet을 사용합니다. 예를 들어 C:\ps-test\MyModule에서 Modules 디렉터리로 MyModule 폴더를 복사하려면 다음을 입력합니다.

               Copy-Item -Path c:\ps-test\MyModule -Destination $home\Documents\WindowsPowerShell\Modules

원하는 어떤 위치에도 모듈을 설치할 수 있지만 기본 모듈 위치에 모듈을 설치하면 관리하기가 더 쉽습니다. 기본 모듈 위치에 대한 자세한 내용은 "모듈과 DSC 리소스 위치 및 PSMODULEPATH" 섹션을 참조하세요.

설치된 모듈을 찾는 방법

기본 모듈 위치에 설치되었으나 세션에 아직 가져오지 않은 모듈을 찾으려면 다음과 같이 입력하세요.

         Get-Module -ListAvailable

세션으로 이미 가져온 모듈을 찾으려면 Windows PowerShell 프롬프트에서 다음을 입력합니다.

         Get-Module

Get-Module cmdlet에 대한 자세한 내용은 Get-Module을 참조하세요.

모듈의 명령을 찾는 방법

Get-Command cmdlet을 사용하여 사용 가능한 명령을 모두 찾습니다. Get-Command cmdlet의 매개 변수를 사용하여 모듈, 이름 및 명사 등의 기준으로 명령을 필터링할 수 있습니다.

모듈의 명령을 모두 찾으려면 다음과 같이 입력하세요.

        Get-Command -Module <module-name>

예를 들어 BitsTransfer 모듈에서 명령을 찾으려면 다음을 입력합니다.

        Get-Command -Module BitsTransfer

Get-Command cmdlet에 대한 자세한 내용은 Get-Command를 참조하세요.

모듈의 명령에 대한 도움말을 보는 방법

모듈이 내보내는 명령에 대한 도움말 파일이 모듈에 포함되어 있는 경우 Get-Help cmdlet은 도움말 항목을 표시합니다. Windows PowerShell에서 명령에 대한 도움말을 표시할 때 사용하는 것과 동일한 Get-Help 명령을 사용합니다.

Windows 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 파일)로 구성되어 있을 때 가져오기가 필요합니다.

Import-Module 명령의 매개 변수(예: 가져온 모든 명령의 명사 이름에 고유한 접두사를 추가하는 Prefix 매개 변수 또는 모듈이 세션의 기존 명령을 숨기거나 바꾸는 명령을 추가하지 못하게 하는 NoClobber 매개 변수)를 사용할 수 있게 모듈을 가져오도록 선택할 수도 있습니다.

모듈을 가져오려면 Import-Module cmdlet을 사용합니다.

PSModulePath 위치의 모듈을 현재 세션으로 가져오려면 다음 명령 형식을 사용합니다.

        Import-Module <module-name>
    

예를 들어 다음 명령은 BitsTransfer 모듈을 현재 세션으로 가져옵니다.

        Import-Module BitsTransfer

기본 모듈 위치에 없는 모듈을 가져오려면 명령에서 모듈 폴더에 대한 정규화된 경로를 사용합니다.

예를 들어 C:\ps-test 디렉터리에 있는 TestCmdlets 모듈을 현재 세션에 추가하려면 다음을 입력하세요.

        Import-Module c:\ps-test\TestCmdlets

모듈 폴더에 없는 모듈 파일을 가져오려면 명령에 모듈 파일에 대한 정규화된 경로를 사용합니다.

예를 들어 C:\ps-test 디렉터리의 TestCmdlets.dll 모듈을 세션에 추가하려면 다음을 입력하세요.

        Import-Module c:\ps-test\TestCmdlets.dll

세션에 모듈을 추가하는 방법에 대한 자세한 내용은 Import-Module을 참조하세요.

모듈을 모든 세션으로 가져오는 방법

Import-Module 명령은 모듈을 현재 Windows PowerShell 세션으로 가져옵니다. 이 명령은 현재 세션에만 적용됩니다.

시작한 모든 Windows PowerShell 세션으로 모듈을 가져오려면 Windows PowerShell 프로필에 Import-Module 명령을 추가합니다.

프로필에 대한 자세한 내용은 about_Profiles를 참조하세요.

모듈을 제거하는 방법

모듈을 제거하면 모듈에서 추가한 명령이 세션에서 삭제됩니다.

세션에서 모듈을 제거하려면 다음 명령 형식을 사용합니다.

        Remove-Module <module-name>

예를 들어 다음 명령은 현재 세션에서 BitsTransfer 모듈을 제거합니다.

        Remove-Module BitsTransfer

모듈을 제거하는 작업은 모듈을 가져오는 작업과 반대입니다. 모듈을 제거해도 모듈이 제거되지는 않습니다. Remove-Module cmdlet에 대한 자세한 내용은 Remove-Module를 참조하세요.

모듈과 DSC 리소스 위치 및 PSMODULEPATH

다음은 Windows PowerShell 모듈의 기본 위치입니다. Windows PowerShell 4.0부터 DSC의 도입으로 새 기본 모듈 및 DSC 리소스 폴더가 도입되었습니다. DSC에 대한 자세한 내용은 about_DesiredStateConfiguration을 참조하세요.

시스템:

$pshome\Modules(%windir%\System32\WindowsPowerShell\v1.0\Modules) 시스템 모듈은 Windows 및 Windows PowerShell과 함께 제공되는 모듈입니다.

Windows PowerShell 4.0부터 Windows PowerShell DSC(필요한 상태 구성)가 도입된 경우 Windows PowerShell에 포함된 DSC 리소스도 $pshome\Modules\PSDesiredStateConfiguration\DSCResources 폴더의 $pshome\Modules에 저장됩니다.

현재 사용자:

$home\Documents\WindowsPowerShell\Modules (%UserProfile%\Documents\WindowsPowerShell\Modules)

또는

$home\My Documents\WindowsPowerShell\Modules(%UserProfile%\My Documents\WindowsPowerShell\Modules) Windows PowerShell 4.0 이전에 사용자가 추가한 모듈의 위치입니다.

Windows PowerShell의 Windows PowerShell 4.0 이상 버전에서는 사용자가 추가한 모듈 및 DSC 리소스가 C:\Program Files\WindowsPowerShell\Modules에 저장됩니다. 이 위치의 모듈 및 DSC 리소스는 컴퓨터의 모든 사용자가 액세스할 수 있습니다. DSC 엔진은 로컬 시스템으로 실행되고 $home\Documents\WindowsPowerShell\Modules와 같은 사용자 특정 경로에 액세스할 수 없기 때문에 이러한 변경이 필요했습니다.

참고:

%Windir%\System32 디렉터리에서 파일을 추가하거나 변경하려면 "관리자 권한으로 실행" 옵션을 사용하여 Windows PowerShell을 시작합니다.

PSModulePath 환경 변수 값($Env:PSModulePath)을 변경하여 시스템에서 기본 모듈 위치를 변경할 수 있습니다. PSModulePath 환경 변수는 Path 환경 변수를 기반으로 모델링되며 형식은 동일합니다.

기본 모듈 위치를 보려면 다음을 입력합니다.

        $env:psmodulepath

기본 모듈 위치를 추가하려면 다음 명령 형식을 사용합니다.

        $env:psmodulepath = $env:psmodulepath + ";<path>"

명령의 세미콜론(;)은 목록에서 앞에 나오는 경로와 새 경로를 구분해줍니다.

예를 들어 "C:\ps-test\Modules" 디렉터리를 추가하려면 다음을 입력합니다.

        $env:psmodulepath + ";c:\ps-test\Modules"

PSModulePath에 경로를 추가하면 Get-Module 및 Import-Module 명령에는 해당 경로의 모듈이 포함됩니다.

설정한 값은 현재 세션에만 적용됩니다. 변경 내용을 영구적으로 적용하려면 Windows PowerShell 프로필에 명령을 추가하거나 제어판의 시스템을 사용하여 레지스트리에서 PSModulePath 환경 변수의 값을 변경합니다.

또한 변경 내용을 영구적으로 적용하기 위해 System.Environment 클래스의 SetEnvironmentVariable 메서드를 사용하여 PSModulePath 환경 변수에 대한 경로를 추가할 수도 있습니다.

PSModulePath 변수에 대한 자세한 내용은 about_Environment_Variables를 참조하세요.

모듈 및 이름 충돌

세션에 이름이 동일한 명령이 두 개 이상 있을 경우 이름이 충돌합니다. 모듈의 명령이 세션의 명령 또는 항목과 동일한 이름을 가질 경우 모듈을 가져올 때 이름 충돌을 발생합니다.

이름 충돌로 인해 명령이 숨겨지거나 바뀔 수 있습니다.

-- 숨겨질 경우. 명령 이름을 입력할 때 실행되는 명령이 아니고 명령을 시작한 모듈이나 스냅인의 이름으로 명령 이름을 정규화하는 것과 같은 기타 방법을 사용하여 실행할 수 있을 때 명령은 숨겨집니다.

-- 바뀔 경우. 동일한 이름의 명령 파일로 덮어쓰였으므로 명령을 실행할 수 없는 경우 명령이 바뀝니다. 충돌을 유발한 모듈을 제거하더라도 세션을 다시 시작해야만 바뀐 명령을 실행할 수 있습니다.

Import-Module은 현재 세션의 명령을 숨기고 바꾸는 명령을 추가할 수도 있습니다. 또한 세션의 명령이 모듈에서 추가한 명령을 숨길 수 있습니다.

이름 충돌이 감지하려면 Get-Command cmdlet의 All 매개 변수를 사용하세요. Windows PowerShell 3.0부터, Get-Command은 사용자가 명령 이름을 입력할 때 실행되는 명령만 가져옵니다. All 매개 변수를 사용하면 세션에서 특정 이름의 명령을 가져옵니다.

이름 충돌을 방지하려면 Import-Module cmdlet의 NoClobber 또는 Prefix 매개 변수를 사용합니다. Prefix 매개 변수를 사용하면 세션에서 명령이 고유해지도록 가져온 명령 이름에 접두사가 추가됩니다. NoClobber 매개 변수를 사용하면 세션의 기존 명령을 숨기거나 바꾸는 명령은 가져오지 않습니다.

Import-Module의 Alias, Cmdlet, Function 및 Variable 매개 변수를 사용하여 가져오려는 명령만 선택하고 세션에서 이름 충돌을 유발하는 명령은 제외할 수 있습니다.

모듈 작성자는 모듈 매니페스트의 DefaultCommandPrefix 속성을 사용하여 모든 명령 이름에 기본 접두사를 추가함으로써 이름 충돌을 방지할 수 있습니다. Prefix 매개 변수 값은 DefaultCommandPrefix 값보다 우선합니다.

명령이 숨겨지더라도 명령을 시작한 모듈이나 스냅인의 이름으로 명령 이름을 정규화하여 명령을 실행할 수 있습니다.

Windows PowerShell 명령 우선 순위 규칙은 세션에 같은 이름의 명령이 있을 경우 실행할 명령을 결정합니다.

예를 들어 세션에 이름이 같은 함수 및 cmdlet이 포함되어 있으면 Windows PowerShell은 기본적으로 함수를 실행합니다. 세션에 이름과 형식이 같은 명령이 포함된 경우(예: 이름이 같은 두 개의 cmdlet) 기본적으로 가장 최근에 추가한 명령이 실행됩니다.

우선 순위 규칙에 대한 설명 및 숨겨진 명령 실행에 대한 지침을 비롯한 자세한 내용은 about_Command_Precedence를 참조하세요.

모듈 및 스냅인

모듈 및 스냅인으로부터 세션에 명령을 추가할 수 있습니다. 모듈은 cmdlet, 공급자 및 함수를 비롯한 모든 유형의 명령과 변수, 별칭 및 Windows PowerShell 드라이브와 같은 항목을 추가할 수 있습니다. 스냅인에서는 cmdlet과 공급자만 추가할 수 있습니다.

사용자 세션에서 모듈이나 스냅인을 제거하기 전에 다음 명령을 사용하여 제거할 명령을 결정합니다.

세션에서 cmdlet의 소스를 찾으려면 다음 명령 형식을 사용합니다.

        get-command <cmdlet-name> | format-list -property verb, noun, pssnapin, module

예를 들어 Get-Date cmdlet의 소스를 찾으려면 다음을 입력합니다.

        get-command get-date | format-list -property verb, noun, pssnapin, module

Windows PowerShell 스냅인에 대한 자세한 내용은 about_PSSnapins를 참조하세요.

모듈 관련 경고 및 오류

모듈에서 내보내는 명령은 Windows PowerShell 명령 명명 규칙을 따라야 합니다. 가져오는 모듈이 이름에 승인되지 않은 동사가 포함된 cmdlet 또는 함수를 내보내는 경우 Import-Module cmdlet은 다음 경고 메시지를 표시합니다.

경고: 가져온 일부 명령 이름에 검색 가능성을 낮출 수 하는 미승인된 동사가 들어 있습니다. 자세한 내용을 보려면 Verbose 매개 변수를 사용하거나 승인된 동사 목록을 보려면 Get-Verb를 입력하세요.

이 메시지는 경고일 뿐입니다. 비준수 명령을 포함하여 전체 모듈을 계속 가져옵니다. 메시지가 모듈 사용자에게 표시되더라도 명명 문제는 모듈 작성자가 수정해야 합니다.

경고 메시지를 표시하지 않으려면 Import-Module cmdlet의 DisableNameChecking 매개 변수를 사용하세요.

기본 제공 모듈 및 스냅인

Windows PowerShell 2.0 및 Windows PowerShell 3.0 이상의 이전 스타일 호스트 프로그램에서는 Windows PowerShell과 함께 설치되는 핵심 명령이 모든 Windows PowerShell 세션에 자동으로 추가되는 스냅인으로 패키지됩니다.

Windows PowerShell 3.0부터 InitialSessionState.CreateDefault2 초기 세션 상태 API를 구현하는 최신 스타일 호스트 프로그램에서 핵심 명령은 모듈에 패키지됩니다. 기본값은 Microsoft.PowerShell.Core로, 항상 스냅인입니다.

Microsoft.PowerShell.Core 스냅인은 기본적으로 모든 세션에 추가됩니다. 모듈은 처음 사용할 때 자동으로 로드됩니다.

참고: New-PSSession cmdlet을 사용하여 시작하는 세션을 비롯한 원격 세션은 기본 제공 명령이 스냅인에 패키지되는 이전 스타일의 세션입니다.

다음 모듈(또는 스냅인)은 Windows PowerShell과 함께 설치됩니다.

        Microsoft.PowerShell.Core
        Microsoft.PowerShell.Diagnostics
        Microsoft.PowerShell.Host
        Microsoft.PowerShell.Management
        Microsoft.PowerShell.ScheduledJob
        Microsoft.PowerShell.Security
        Microsoft.PowerShell.Utility
        Microsoft.WSMan.Management
        PSDesiredStateConfiguration
        PSWorkflow
        PSWorkflowUtility
        ISE

모듈 이벤트 로깅

Windows PowerShell 3.0부터 Windows PowerShell 모듈 및 스냅인의 LogPipelineExecutionDetails 속성을 $True로 설정하여 모듈 및 스냅인에 cmdlet 및 함수에 대한 실행 이벤트를 기록할 수 있습니다. 또한 그룹 정책 설정을 사용하고, 모듈 로깅을 켜서 모든 Windows PowerShell 세션에서 모듈 로깅을 사용하도록 설정할 수도 있습니다. 자세한 내용은 about_EventLogs(https://go.microsoft.com/fwlink/?LinkID=113224) 및 about_Group_Policy_Settings(https://go.microsoft.com/fwlink/?LinkID=251696)를 참조하세요.

참고 항목

about_Command_Precedence

about_DesiredStateConfiguration

about_Eventlogs

about_Group_Policy_Settings

about_PSSnapins

Get-Command

Get-Help

Get-Module

Import-Module

Remove-Module