모듈 편리한 단위(일반적으로 단일 디렉터리에 저장됨)로 그룹화된 관련 Windows PowerShell 기능 집합입니다. 관련 스크립트 파일, 어셈블리 및 관련 리소스 집합을 모듈로 정의하면 코드를 참조, 로드, 유지 및 공유할 수 있습니다.
모듈의 주요 목적은 Windows PowerShell 코드의 모듈화(즉, 재사용 및 추상화)를 허용하는 것입니다. 예를 들어 모듈을 만드는 가장 기본적인 방법은 Windows PowerShell 스크립트를 .psm1
파일로 저장하는 것입니다. 이렇게 하면 스크립트에 포함된 함수 및 변수를 제어할 수 있습니다(예: 공개 또는 비공개로 설정). 스크립트를 .psm1
파일로 저장하면 특정 변수의 범위를 제어할 수도 있습니다. 마지막으로 Install-Module 같은 cmdlet을 사용하여 스크립트를 구성, 설치 및 대규모 솔루션의 구성 요소로 사용할 수도 있습니다.
모듈 구성 요소 및 형식
모듈은 다음 네 가지 기본 구성 요소로 구성됩니다.
일종의 코드 파일(일반적으로 PowerShell 스크립트 또는 관리되는 cmdlet 어셈블리)입니다.
추가 어셈블리, 도움말 파일 또는 스크립트와 같이 위의 코드 파일에 필요할 수 있는 다른 모든 항목
위의 파일을 설명하고 작성자 및 버전 관리 정보와 같은 메타데이터를 저장하는 매니페스트 파일입니다.
위의 모든 콘텐츠를 포함하고 PowerShell이 합리적으로 찾을 수 있는 위치에 있는 디렉터리입니다.
비고
이러한 구성 요소 자체는 실제로 필요하지 않습니다. 예를 들어 모듈은 기술적으로
.psm1
파일에 저장된 스크립트일 수 있습니다. 매니페스트 파일에만 해당되는 모듈을 포함할 수도 있습니다. 이 모듈은 주로 조직 용도로 사용됩니다. 또한 모듈을 동적으로 만드는 스크립트를 작성할 수 있으므로 실제로 아무 것도 저장할 디렉터리가 필요하지 않습니다. 다음 섹션에서는 모듈의 가능한 여러 부분을 함께 혼합하고 일치시켜 얻을 수 있는 모듈 유형에 대해 설명합니다.
스크립트 모듈
이름에서 알 수 있듯이 스크립트 모듈 유효한 Windows PowerShell 코드를 포함하는 파일(.psm1
)입니다. 스크립트 개발자와 관리자는 이 유형의 모듈을 사용하여 멤버에 함수, 변수 등이 포함된 모듈을 만들 수 있습니다. 스크립트 모듈은 관리자가 가져오기, 내보내기 및 관리 기능을 사용할 수 있도록 다른 확장이 있는 Windows PowerShell 스크립트일 뿐입니다.
또한 매니페스트 파일을 사용하여 데이터 파일, 다른 종속 모듈 또는 런타임 스크립트와 같은 다른 리소스를 모듈에 포함할 수 있습니다. 매니페스트 파일은 작성 및 버전 관리 정보와 같은 메타데이터를 추적하는 데에도 유용합니다.
마지막으로 동적으로 생성되지 않은 다른 모듈과 마찬가지로 스크립트 모듈을 PowerShell에서 합리적으로 검색할 수 있는 폴더에 저장해야 합니다. 일반적으로 PowerShell 모듈 경로에 있습니다. 그러나 필요한 경우 모듈이 설치된 위치를 명시적으로 설명할 수 있습니다. 자세한 내용은 PowerShell 스크립트 모듈작성하는 방법을 참조하세요.
이진 모듈
이진 모듈 C#과 같은 컴파일된 코드를 포함하는 .NET Framework 어셈블리(.dll
)입니다.
Cmdlet 개발자는 이 유형의 모듈을 사용하여 cmdlet, 공급자 등을 공유할 수 있습니다. (기존 스냅인은 이진 모듈로도 사용할 수 있습니다.) 스크립트 모듈에 비해 이진 모듈을 사용하면 더 빠른 cmdlet을 만들거나 Windows PowerShell 스크립트에서 코딩하기가 쉽지 않은 기능(예: 다중 스레딩)을 사용할 수 있습니다.
스크립트 모듈과 마찬가지로 모듈에서 사용하는 추가 리소스를 설명하고 모듈에 대한 메타데이터를 추적하는 매니페스트 파일을 포함할 수 있습니다. 마찬가지로 PowerShell 모듈 경로를 따라 폴더에 이진 모듈을 설치해야 합니다. 자세한 내용은 PowerShell 이진 모듈 작성하는 방법을방법을 참조하세요.
매니페스트 모듈
매니페스트 모듈 매니페스트 파일을 사용하여 모든 구성 요소를 설명하는 모듈이지만 어떤 종류의 핵심 어셈블리나 스크립트도 포함하지 않습니다. (공식적으로 매니페스트 모듈은 매니페스트의 ModuleToProcess
또는 RootModule
요소를 비워 둡니다.) 그러나 종속 어셈블리를 로드하거나 특정 사전 처리 스크립트를 자동으로 실행하는 기능과 같은 모듈의 다른 기능을 계속 사용할 수 있습니다. 매니페스트 모듈을 사용하여 중첩된 모듈, 어셈블리, 형식 또는 형식과 같이 다른 모듈에서 사용할 리소스를 패키지하는 편리한 방법으로 사용할 수도 있습니다. 자세한 내용은 PowerShell 모듈 매니페스트작성하는 방법을 참조하세요.
동적 모듈
동적 모듈 파일에서 로드되거나 저장되지 않은 모듈입니다. 대신 New-Module cmdlet을 사용하여 스크립트에 의해 동적으로 만들어집니다. 이 유형의 모듈을 사용하면 스크립트가 영구 스토리지에 로드하거나 저장할 필요가 없는 모듈을 주문형으로 만들 수 있습니다. 기본적으로 동적 모듈은 수명이 짧기 때문에 Get-Module
cmdlet에서 액세스할 수 없습니다. 마찬가지로, 일반적으로 모듈 매니페스트가 필요하지 않으며 관련 어셈블리를 저장하기 위해 영구 폴더가 필요할 수도 있습니다.
모듈 매니페스트
모듈 매니페스트 해시 테이블을 포함하는 .psd1
파일입니다. 해시 테이블의 키와 값은 다음 작업을 수행합니다.
모듈의 내용과 특성을 설명합니다.
필수 구성 요소를 정의합니다.
구성 요소 처리 방법을 결정합니다.
매니페스트는 모듈에 필요하지 않습니다. 모듈은 스크립트 파일(
.ps1
), 스크립트 모듈 파일(.psm1
), 매니페스트 파일(.psd1
), 서식 및 형식 파일(.ps1xml
), cmdlet 및 공급자 어셈블리(.dll
), 리소스 파일, 도움말 파일, 지역화 파일 또는 모듈의 일부로 번들로 제공되는 다른 형식의 파일 또는 리소스를 참조할 수 있습니다. 국제화된 스크립트의 경우 모듈 폴더에는 메시지 카탈로그 파일 집합도 포함됩니다. 모듈 폴더에 매니페스트 파일을 추가하는 경우 매니페스트를 참조하여 여러 파일을 단일 단위로 참조할 수 있습니다.매니페스트 자체는 다음과 같은 정보 범주를 설명합니다.
모듈 버전 번호, 작성자 및 설명과 같은 모듈에 대한 메타데이터입니다.
Windows PowerShell 버전, CLR(공용 언어 런타임) 버전 및 필요한 모듈과 같은 모듈을 가져오는 데 필요한 필수 구성 요소입니다.
처리할 스크립트, 형식 및 형식과 같은 처리 지시문입니다.
내보낼 별칭, 함수, 변수 및 cmdlet과 같이 내보낼 모듈의 멤버에 대한 제한 사항입니다.
자세한 내용은 PowerShell 모듈 매니페스트작성하는 방법을 참조하세요.
모듈 저장 및 설치
스크립트, 이진 또는 매니페스트 모듈을 만든 후에는 다른 사용자가 액세스할 수 있는 위치에 작업을 저장할 수 있습니다. 예를 들어 모듈을 Windows PowerShell이 설치된 시스템 폴더에 저장하거나 사용자 폴더에 저장할 수 있습니다.
일반적으로 $Env:PSModulePath
변수에 저장된 경로 중 하나를 사용하여 모듈을 설치해야 하는 위치를 결정할 수 있습니다. 이러한 경로 중 하나를 사용하면 사용자가 코드에서 모듈을 호출할 때 PowerShell에서 모듈을 자동으로 찾아서 로드할 수 있습니다. 다른 곳에 모듈을 저장하는 경우 Install-Module
호출할 때 모듈의 위치를 매개 변수로 전달하여 PowerShell에 명시적으로 알릴 수 있습니다.
그럼에도 불구하고 폴더의 경로를 모듈의 기본(ModuleBase)라고 하며 스크립트, 이진 또는 매니페스트 모듈 파일의 이름은 다음과 같은 예외를 제외하고 모듈 폴더 이름과 동일해야 합니다.
New-Module
cmdlet에서 만든 동적 모듈은 cmdlet의Name
매개 변수를 사용하여 이름을 지정할 수 있습니다.Import-Module -Assembly
명령으로 어셈블리 개체에서 가져온 모듈의 이름은"dynamic_code_module_" + assembly.GetName()
구문에 따라 지정됩니다.자세한 내용은 PowerShell 모듈 설치 및 about_PSModulePath 참조하세요.
모듈 Cmdlet 및 변수
모듈을 만들고 관리하기 위해 Windows PowerShell에서 제공하는 cmdlet 및 변수는 다음과 같습니다.
New-Module cmdlet 이 cmdlet은 메모리에만 존재하는 새 동적 모듈을 만듭니다. 모듈은 스크립트 블록에서 만들어지고 함수 및 변수와 같은 내보낸 멤버는 세션에서 즉시 사용할 수 있으며 세션이 닫히기 전까지 계속 사용할 수 있습니다.
New-ModuleManifest cmdlet 이 cmdlet은 새 모듈 매니페스트(.psd1
) 파일을 만들고 해당 값을 채우고 매니페스트 파일을 지정된 경로에 저장합니다. 이 cmdlet을 사용하여 수동으로 채울 수 있는 모듈 매니페스트 템플릿을 만들 수도 있습니다.
Import-Module cmdlet 이 cmdlet은 현재 세션에 하나 이상의 모듈을 추가합니다.
Get-Module cmdlet 이 cmdlet은 현재 세션으로 가져올 수 있거나 가져올 수 있는 모듈에 대한 정보를 검색합니다.
Export-ModuleMember cmdlet 이 cmdlet은 스크립트 모듈(.psm1
) 파일 또는 New-Module
cmdlet을 사용하여 만든 동적 모듈에서 내보낸 모듈 멤버(예: cmdlet, 함수, 변수 및 별칭)를 지정합니다.
Remove-Module cmdlet 이 cmdlet은 현재 세션에서 모듈을 제거합니다.
Test-ModuleManifest cmdlet 이 cmdlet은 모듈 매니페스트 파일(.psd1
)에 나열된 파일이 실제로 지정된 경로에 있는지 확인하여 모듈 매니페스트가 모듈의 구성 요소를 정확하게 설명하는지 확인합니다.
$PSScriptRoot 이 변수에는 스크립트 모듈이 실행되는 디렉터리가 포함됩니다. 이를 통해 스크립트는 모듈 경로를 사용하여 다른 리소스에 액세스할 수 있습니다.
$Env:PSModulePath 이 환경 변수에는 Windows PowerShell 모듈이 저장되는 디렉터리 목록이 포함되어 있습니다. Windows PowerShell은 모듈을 자동으로 가져오고 모듈에 대한 도움말 항목을 업데이트할 때 이 변수의 값을 사용합니다.
또한 참조하십시오
PowerShell