다음을 통해 공유


모듈에_대해

간단한 설명

PowerShell 모듈을 설치, 가져오기 및 사용하는 방법을 설명합니다.

긴 설명

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

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

이 항목에서는 PowerShell 모듈을 사용하는 방법에 대해 설명합니다. PowerShell 모듈을 작성하는 방법에 대한 자세한 내용은 PowerShell 모듈 작성을 참조하세요.

모듈이란 무엇입니까?

모듈은 cmdlet, 공급자, 함수, 워크플로, 변수 및 별칭과 같은 PowerShell 멤버를 포함하는 패키지입니다. 이 패키지의 멤버는 PowerShell 스크립트, 컴파일된 DLL 또는 둘의 조합으로 구현할 수 있습니다. 이러한 파일은 일반적으로 단일 디렉토리에 함께 그룹화됩니다. 자세한 내용은 SDK 설명서에서 Windows PowerShell 모듈 이해를 참조하세요.

모듈 자동 로딩

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

모듈의 명령도 더 쉽게 찾을 수 있습니다. 이제 cmdlet은 Get-Command 아직 세션에 없더라도 설치된 모든 모듈의 모든 명령을 가져옵니다. 모듈을 먼저 가져올 필요 없이 명령을 찾아 사용할 수 있습니다.

다음 각 예제를 사용하면 를 포함하는 Get-CimInstanceCimCmdlets 모듈을 세션으로 가져올 수 있습니다.

  • 명령 실행

    Get-CimInstance Win32_OperatingSystem
    
  • 명령 가져오기

    Get-Command Get-CimInstance
    
  • 명령에 대한 도움말 보기

    Get-Help Get-CimInstance
    

Get-Command 와일드카드 문자()*를 포함하는 명령은 검색용으로만 간주되며 사용되지 않으며 모듈을 가져오지 않습니다.

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

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

여전히 명령을 실행하여 Import-Module 모듈을 가져오고 변수를 사용하여 $PSModuleAutoloadingPreference 모듈의 자동 가져오기를 활성화, 비활성화 및 구성할 수 있습니다. 자세한 내용은 about_Preference_Variables참조하세요.

모듈 사용 방법

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

  1. 모듈을 설치합니다. (이것은 종종 당신을 위해 수행됩니다.)
  2. 모듈에서 추가한 명령을 찾습니다.
  3. 모듈에서 추가한 명령을 사용합니다.

이 항목에서는 이러한 작업을 수행하는 방법에 대해 설명합니다. 또한 모듈 관리에 대한 다른 유용한 정보도 포함되어 있습니다.

모듈을 설치하는 방법

모듈이 파일이 포함된 폴더로 모듈을 받은 경우 PowerShell에서 사용하기 전에 컴퓨터에 설치해야 합니다.

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

다음 명령을 사용하여 현재 사용자에 대한 Modules 디렉터리를 만듭니다.

New-Item -Type Directory -Path $HOME\Documents\PowerShell\Modules

전체 모듈 폴더를 Modules 디렉토리로 복사합니다. Windows 탐색기 및 Cmd.exe및 PowerShell을 포함한 모든 방법을 사용하여 폴더를 복사할 수 있습니다. PowerShell에서 Copy-Item cmdlet을 사용합니다. 예를 들어, 에서 MyModule 폴더를 C:\ps-test\MyModule Modules 디렉토리로 복사하려면 다음과 같이 입력합니다.

Copy-Item -Path C:\ps-test\MyModule -Destination `
    $HOME\Documents\PowerShell\Modules

모든 위치에 모듈을 설치할 수 있지만 기본 모듈 위치에 모듈을 설치하면 쉽게 관리할 수 있습니다. 기본 모듈 위치에 대한 자세한 내용은 모듈 및 DSC 리소스 위치 및 PSModulePath 섹션을 참조하세요.

설치된 모듈을 찾는 방법

기본 모듈 위치에 설치되어 있지만 아직 세션으로 가져오지 않은 모듈을 찾으려면 다음과 같이 입력합니다.

Get-Module -ListAvailable

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

Get-Module

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

모듈에서 명령을 찾는 방법

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

모듈에서 모든 명령을 찾으려면 다음을 입력합니다.

Get-Command -Module <module-name>

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

Get-Command -Module BitsTransfer

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

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

모듈에 내보내는 명령에 대한 도움말 파일이 포함되어 있으면 cmdlet에 Get-Help 도움말 항목이 표시됩니다. PowerShell의 모든 명령에 대한 도움말을 얻는 데 사용하는 것과 동일한 Get-Help 명령 형식을 사용합니다.

PowerShell 3.0부터 모듈에 대한 도움말 파일을 다운로드하고 도움말 파일에 대한 업데이트를 다운로드하여 더 이상 사용되지 않도록 할 수 있습니다.

모듈의 명령에 대한 도움말을 보려면 다음을 입력합니다.

Get-Help <command-name>

모듈의 명령에 대한 온라인 도움말을 보려면 다음과 같이 입력합니다.

Get-Help <command-name> -Online

모듈의 명령에 대한 도움말 파일을 다운로드하여 설치하려면 다음을 입력합니다.

Update-Help -Module <module-name>

자세한 내용은 Get-HelpUpdate-Help를 참조하세요.

모듈을 가져오는 방법

모듈을 가져오거나 모듈 파일을 가져와야 할 수도 있습니다. 모듈이 PSModulePath 환경 변수로 $env:PSModulePath지정된 위치에 설치되지 않았거나 모듈이 폴더로 전달되는 일반 모듈 대신 .dll 또는 .psm1 파일과 같은 파일로 구성된 경우 가져오기가 필요합니다.

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

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

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 명령은 모듈을 현재 PowerShell 세션으로 가져옵니다. 시작하는 모든 PowerShell 세션으로 모듈을 가져오려면 powerShell 프로필에 Import-Module 명령을 추가합니다.

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

모듈을 제거하는 방법

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

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

Remove-Module <module-name>

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

Remove-Module BitsTransfer

모듈을 제거하면 모듈 가져오기 작업이 취소됩니다. 모듈을 제거해도 모듈은 삭제되지 않습니다. 자세한 내용은 Remove-Module참조하세요.

모듈 및 DSC 리소스 위치, PSModulePath

$env:PSModulePath 환경 변수에는 모듈 및 리소스를 찾기 위해 검색되는 폴더 위치 목록이 포함됩니다.

기본적으로 $env:PSModulePath 할당된 유효 위치는 다음과 같습니다.

  • 시스템 전체 위치: $PSHOME\Modules

    이러한 폴더에는 Windows 및 PowerShell과 함께 제공되는 모듈이 포함되어 있습니다.

    PowerShell에 포함된 DSC 리소스는 폴더에 저장됩니다 $PSHOME\Modules\PSDesiredStateConfiguration\DSCResources .

  • 사용자별 모듈: 사용자가 사용자 범위에서 설치한 모듈입니다. Install-Module 현재 사용자 또는 모든 사용자에 대해 모듈이 설치되어 있는지 여부를 지정할 수 있는 Scope 매개 변수가 있습니다. 자세한 내용은 Install-Module참조하세요.

    Windows에서 사용자별 CurrentUser 위치는 사용자 프로필의 문서 위치에 있는 폴더입니다PowerShell\Modules. 해당 위치의 특정 경로는 Windows 버전 및 폴더 리디렉션을 사용하는지 여부에 따라 다릅니다. Microsoft OneDrive는 문서 폴더의 위치를 변경할 수도 있습니다.

    기본적으로 Windows 10 이상에서 해당 위치는 $HOME\Documents\PowerShell\Modules입니다. Linux 또는 Mac에서 CurrentUser 위치는 $HOME/.local/share/powershell/Modules입니다.

    비고

    다음 명령을 [Environment]::GetFolderPath('MyDocuments')사용하여 Documents 폴더의 위치를 확인할 수 있습니다.

  • AllUsers 위치는 Windows에 있습니다$env:PROGRAMFILES\PowerShell\Modules. Linux 또는 Mac에서 모듈은 에 저장됩니다 /usr/local/share/powershell/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"

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

$Env:PSModulePath += ":<path>"

예를 들어 PSModulePath 환경 변수의 값에 디렉터리를 추가하려면 /usr/local/Fabrikam/Modules 다음과 같이 입력합니다.

$Env:PSModulePath += ":/usr/local/Fabrikam/Modules"

Linux 또는 MacOS에서 명령의 콜론(:)은 새 경로를 목록에서 이전 경로와 구분합니다.

PSModulePathGet-ModuleImport-Module 에 경로를 추가하고 명령에 해당 경로에 모듈을 포함하는 경우.

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

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

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

모듈과 이름 충돌

세션에서 둘 이상의 명령 이름이 같은 경우 이름 충돌이 발생합니다. 모듈을 가져오면 모듈의 명령 이름이 세션의 명령 또는 항목과 같을 때 이름이 충돌합니다.

이름 충돌이 발생하면 명령이 숨겨지거나 바뀝니다.

숨겨져 있음

명령 이름을 입력할 때 실행되는 명령이 아닌 경우 명령이 숨겨지지만 명령 이름을 해당 명령이 시작된 모듈 또는 스냅인의 이름으로 한정하는 등의 다른 방법을 사용하여 명령을 실행할 수 있습니다.

대체

명령은 동일한 이름의 명령으로 덮어썼기 때문에 실행할 수 없는 경우 대체됩니다. 충돌을 일으킨 모듈을 제거하더라도 세션을 다시 시작하지 않으면 대체된 명령을 실행할 수 없습니다.

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

이름 충돌을 검색하려면 cmdlet의 Get-Command 매개 변수를 사용합니다. PowerShell 3.0 Get-Command 부터 명령 이름을 입력할 때 실행되는 명령만 가져옵니다. All 매개 변수는 세션의 특정 이름을 가진 모든 명령을 가져옵니다.

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

또한 별칭, Cmdlet, 함수변수 매개 변수 Import-Module를 사용하여 가져올 명령만 선택할 수 있으며 세션에서 이름 충돌을 일으키는 명령을 제외할 수 있습니다.

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

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

PowerShell 명령 우선 순위 규칙은 세션에 동일한 이름의 명령이 포함될 때 실행되는 명령을 결정합니다.

예를 들어 세션에 동일한 이름의 함수와 cmdlet이 포함된 경우 PowerShell은 기본적으로 함수를 실행합니다. 세션에 동일한 이름을 가진 동일한 형식의 명령(예: 이름이 같은 두 cmdlet)이 포함된 경우 기본적으로 가장 최근에 추가된 명령을 실행합니다.

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

모듈 및 스냅인

모듈과 스냅인에서 세션에 명령을 추가할 수 있습니다. 모듈은 cmdlet, 공급자 및 함수를 포함한 모든 유형의 명령과 변수, 별칭 및 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,module

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

경고: 일부 가져온 명령 이름에는 승인되지 않은 동사가 포함되어 있어 검색할 수 없게 만들 수 있습니다. 자세한 내용은 Verbose 매개 변수를 사용하거나 Get-Verb 입력하여 승인된 동사 목록을 확인합니다.

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

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

Built-in Modules and Snap-in 내장 모듈 및 스냅인

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

PowerShell 3.0부터 초기 세션 상태 API를 InitialSessionState.CreateDefault2 구현하는 호스트 프로그램의 경우 Microsoft.PowerShell.Core 스냅인이 기본적으로 모든 세션에 추가됩니다. 모듈은 처음 사용할 때 자동으로 로드됩니다.

비고

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

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

  • CimCmdlet
  • Microsoft.PowerShell.아카이브
  • Microsoft.PowerShell.Core
  • Microsoft.PowerShell.Diagnostics
  • Microsoft.PowerShell.호스트
  • Microsoft.PowerShell.Management
  • Microsoft.PowerShell.Security
  • Microsoft.PowerShell.Utility
  • Microsoft.WSMan.Management
  • 패키지 관리
  • PowerShellGet
  • PSDesiredState구성
  • PSDiagnostics
  • PS리들린

로깅 모듈 이벤트

PowerShell 3.0부터 모듈 및 스냅인의 $True 속성을 로 설정하여 PowerShell 모듈 및 스냅인의 cmdlet 및 함수에 대한 실행 이벤트를 기록할 수 있습니다. 그룹 정책 설정인 모듈 로깅 켜기를 사용하여 모든 PowerShell 세션에서 모듈 로깅을 사용하도록 설정할 수도 있습니다. 자세한 내용은 로깅 및 그룹 정책 문서를 참조하세요.

참고하십시오