다음을 통해 공유


about_Module_Manifests

간단한 설명

모듈 매니페스트 파일을 작성하기 위한 설정 및 사례를 설명합니다.

자세한 설명

모듈 매니페스트는 해시 테이블을 포함하는 PowerShell 데이터 파일(.psd1)입니다. 해시 테이블의 키-값 쌍은 모듈의 내용과 특성을 설명하고, 필수 구성 요소를 정의하며, 구성 요소 처리 방법을 제어합니다.

매니페스트는 모듈을 로드할 필요는 없지만 모듈을 PowerShell 갤러리 게시해야 합니다. 매니페스트를 사용하면 모듈의 구현을 로드 방식과 분리할 수도 있습니다. 매니페스트를 사용하여 요구 사항, 호환성, 로드 순서 등을 정의할 수 있습니다.

매니페스트 설정에 대한 매개 변수를 지정하지 않고 사용하면 New-ModuleManifest 최소 매니페스트 파일이 작성됩니다. 아래 코드 조각은 간결성을 위해 주석과 간격을 잘라낸 이 기본 출력을 보여줍니다.

@{
# RootModule = ''
ModuleVersion = '1.0'
# CompatiblePSEditions = @()
GUID = 'e7184b71-2527-469f-a50e-166b612dfb3b'
Author = 'username'
CompanyName = 'Unknown'
Copyright = '(c) 2022 username. All rights reserved.'
# Description = ''
# PowerShellVersion = ''
# PowerShellHostName = ''
# PowerShellHostVersion = ''
# DotNetFrameworkVersion = ''
# CLRVersion = ''
# ProcessorArchitecture = ''
# RequiredModules = @()
# RequiredAssemblies = @()
# ScriptsToProcess = @()
# TypesToProcess = @()
# FormatsToProcess = @()
# NestedModules = @()
FunctionsToExport = @()
CmdletsToExport = @()
VariablesToExport = '*'
AliasesToExport = @()
# DscResourcesToExport = @()
# ModuleList = @()
# FileList = @()
PrivateData = @{
    PSData = @{
        # Tags = @()
        # LicenseUri = ''
        # ProjectUri = ''
        # IconUri = ''
        # ReleaseNotes = ''
    } # End of PSData hashtable
} # End of PrivateData hashtable
# HelpInfoURI = ''
# DefaultCommandPrefix = ''
}

모듈을 게시하기 전에 모듈 매니페스트의 유효성을 검사하는 데 사용할 Test-ModuleManifest 수 있습니다. Test-ModuleManifest 는 매니페스트가 유효하지 않거나 세션이 매니페스트에 설정된 요구 사항을 충족하지 않으므로 모듈을 현재 세션으로 가져올 수 없는 경우 오류를 반환합니다.

모듈 매니페스트에서 스크립트 코드 사용

매니페스트 파일의 설정에 할당된 값은 PowerShell에서 평가하는 식일 수 있습니다. 이렇게 하면 경로를 생성하고 변수를 기반으로 값을 조건부로 할당할 수 있습니다.

모듈을 사용하여 Import-Module가져오면 매니페스트가 언어 모드로 Restricted 평가됩니다. Restricted 모드는 사용할 수 있는 명령 및 변수를 제한합니다.

허용되는 명령

  • Import-LocalizedData
  • ConvertFrom-StringData
  • Write-Host
  • Out-Host
  • Join-Path

허용되는 변수

  • $PSScriptRoot
  • $PSEdition
  • $EnabledExperimentalFeatures
  • 모든 환경 변수(예: $ENV:TEMP

자세한 내용은 about_Language_Modes 참조하세요.

매니페스트 설정

다음 섹션에서는 모듈 매니페스트에서 사용 가능한 모든 설정과 이를 사용하는 방법을 자세히 설명합니다. 설정의 개요로 시작하고 다음을 나열하는 행렬이 뒤에 잇습니다.

  • 입력 형식: 매니페스트에서 이 설정에 지정할 수 있는 개체 형식입니다.
  • 필수: 이 값이Yes면 모듈을 가져오고 PowerShell 갤러리 게시하는 데 모두 설정이 필요합니다. No이 경우 둘 다 필요하지 않습니다. PowerShell Gallery이 경우 PowerShell 갤러리 게시하는 데만 필요합니다.
  • 설정되지 않은 경우 값: 이 설정은 가져올 때 가지며 명시적으로 설정되지 않은 값입니다.
  • 와일드카드를 허용합니다. 이 설정이 와일드카드 값을 사용할 수 있는지 여부입니다.

RootModule

이 설정은 모듈의 기본 또는 루트 파일을 지정합니다. 모듈을 가져오면 루트 모듈 파일에서 내보낸 멤버를 호출자의 세션 상태로 가져옵니다.

입력 형식 System.String
Required 아니요
설정되지 않은 경우 값 $null
와일드카드 허용 아니요

값은 다음 중 하나의 경로여야 합니다.

  • 스크립트(.ps1)
  • 스크립트 모듈(.psm1)
  • 모듈 매니페스트(.psd1)
  • 어셈블리(.dll)
  • cmdlet 정의 XML 파일(.cdxml)
  • Windows PowerShell 5.1 워크플로(.xaml)

경로는 모듈 매니페스트를 기준으로 해야 합니다.

모듈 매니페스트에 RootModule 키에 루트 파일이 지정되지 않은 경우 매니페스트는 모듈의 기본 파일이 되고 모듈은 매니페스트 모듈(ModuleType = Manifest)이 됩니다. RootModule이 정의되면 모듈의 형식은 사용되는 파일 확장명에서 결정됩니다.

  • a .ps1 또는 .psm1 파일은 모듈 형식 스크립트를 만듭니다.
  • .psd1 파일이 모듈 형식 매니페스트를 만듭니다.
  • .dll 파일이 모듈 형식을 이진으로 만듭니다.
  • .cdxml 파일이 모듈 형식 CIM을 만듭니다.
  • .xaml 파일이 모듈 형식 워크플로를 만듭니다.

기본적으로 RootModule모든 모듈 멤버는 내보내집니다.

모듈 로드 속도는 이진, 스크립트 및 CIM 모듈 유형 간에 다릅니다. 자세한 내용은 PowerShell 모듈 작성 고려 사항을 참조 하세요.

예를 들어 이 모듈의 ModuleType은 매니페스트입니다. 이 모듈에서 내보낼 수 있는 유일한 모듈 멤버는 NestedModules 설정으로 지정된 모듈에 정의된 멤버입니다.

@{
    RootModule = ''
}

참고 항목

이 설정은 모듈 매니페스트에서 ModuleToProcess로 지정할 수도 있습니다. 이 설정의 이름은 유효하지만 RootModule을 대신 사용하는 것이 좋습니다.

ModuleVersion

이 설정은 모듈의 버전을 지정합니다. 시스템에 여러 버전의 모듈이 있는 경우 실행 Import-Module시 최신 버전이 기본적으로 로드됩니다.

입력 형식 System.String
Required
설정되지 않은 경우 값 None
와일드카드 허용 아니요

이 설정의 값은 실행할 Import-Module때 변환할 System.Version 수 있어야 합니다.

예를 들어 이 매니페스트는 모듈의 버전을 .로 '1.2.3'선언합니다.

@{
    ModuleVersion = '1.2.3'
}

모듈을 가져오고 Version 속성을 검사할 때는 문자열이 아닌 System.Version 개체입니다.

$ExampleModule = Import-Module example.psd1
$ExampleModule.Version
$ExampleModule.Version.GetType().Name
Major  Minor  Build  Revision
-----  -----  -----  --------
1      2      3      -1

Version

CompatiblePSEditions

이 설정은 모듈의 호환되는 PSEditions를 지정합니다.

입력 형식 System.String[]
허용되는 값 Desktop, Core
Required 아니요
설정되지 않은 경우 값 $null
와일드카드 허용 아니요

이 설정의 값이 $null면 세션의 PSEdition에 관계없이 모듈을 가져올 수 있습니다. 허용되는 값 중 하나 이상으로 설정할 수 있습니다.

PSEdition에 대한 자세한 내용은 다음을 참조하세요.

이 설정을 정의하면 자동 변수의 값이 $PSEdition 설정에 포함된 세션으로만 모듈을 가져올 수 있습니다.

참고 항목

$PSEdition 자동 변수는 버전 5.1에서 도입되었으므로 이전 버전의 Windows PowerShell은 CompatiblePSEditions 설정을 사용하는 모듈을 로드할 수 없습니다.

예를 들어 모든 세션에서 이 모듈 매니페스트를 가져올 수 있습니다.

@{
    # CompatiblePSEditions = @()
}

설정을 지정하면 자동 변수의 값이 있는 세션에서만 이 모듈을 $PSEdition 가져올 수 있습니다 Core.

@{
    CompatiblePSEditions = @('Core')
}

GUID

이 설정은 모듈의 고유 식별자를 지정합니다. GUID는 이름이 같은 모듈을 구분하는 데 사용됩니다.

입력 형식 System.String
Required 아니요
설정되지 않은 경우 값 00000000-0000-0000-0000-000000000000
와일드카드 허용 아니요

이 설정의 값은 실행할 Import-Module때 변환할 System.Guid 수 있어야 합니다.

주의

필수 설정은 아니지만 매니페스트에서 GUID지정하지 않으면 이점이 없으며 모듈의 이름 충돌이 발생할 수 있습니다.

매니페스트에서 사용할 새 GUID를 만들 수 있습니다.

New-Guid | Select-Object -ExpandProperty Guid
8456b025-2fa5-4034-ae47-e6305f3917ca
@{
    GUID = '8456b025-2fa5-4034-ae47-e6305f3917ca'
}

컴퓨터에 이름이 같은 다른 모듈이 있는 경우 모듈의 정규화된 이름을 지정하여 원하는 모듈을 가져올 수 있습니다.

Import-Module -FullyQualifiedName @{
    ModuleName    = 'Example'
    GUID          = '8456b025-2fa5-4034-ae47-e6305f3917ca'
    ModuleVersion = '1.0.0'
}

작성자

이 설정은 모듈 작성자를 식별합니다.

입력 형식 System.String
Required PowerShell 갤러리
설정되지 않은 경우 값 $null
와일드카드 허용 아니요

이 매니페스트는 모듈의 작성자가 Contoso 개발자 환경 팀임을 선언합니다.

@{
    Author = 'Contoso Developer Experience Team'
}

CompanyName

이 설정은 모듈을 만든 회사 또는 공급업체를 식별합니다.

입력 형식 System.String
Required 아니요
설정되지 않은 경우 값 $null
와일드카드 허용 아니요

이 매니페스트는 Contoso, Ltd.에서 모듈을 만들었다고 선언합니다.

@{
    CompanyName = 'Contoso, Ltd.'
}

이 설정은 모듈에 대한 저작권 명세서를 지정합니다.

입력 형식 System.String
Required 아니요
설정되지 않은 경우 값 $null
와일드카드 허용 아니요

이 매니페스트는 2022년 현재 Contoso, Ltd.에 대한 모든 권리를 보존하는 저작권 명세서를 선언합니다.

@{
    Copyright = '(c) 2022 Contoso, Ltd. All rights reserved.'
}

설명

이 설정은 상위 수준에서 모듈을 설명합니다.

입력 형식 System.String
Required PowerShell 갤러리
설정되지 않은 경우 값 $null
와일드카드 허용 아니요

이 매니페스트에는 간단한 설명이 포함되어 있습니다. 여기에 있는 문자열을 사용하여 더 길거나 여러 줄로 된 설명을 작성할 수도 있습니다.

@{
    Description = 'Example commands to show a valid module manifest'
}

PowerShellVersion

이 설정은 이 모듈에 필요한 최소 버전의 PowerShell을 지정합니다.

입력 형식 System.String
Required 아니요
설정되지 않은 경우 값 $null
와일드카드 허용 아니요

이 설정의 값은 실행할 Import-Module때 변환할 System.Version 수 있어야 합니다.

이 설정이 설정되지 않은 경우 PowerShell은 현재 버전에 따라 모듈의 가져오기를 제한하지 않습니다.

예를 들어 이 매니페스트는 모듈이 모든 버전의 PowerShell 및 Windows PowerShell과 호환된다는 것을 선언합니다.

@{
    # PowerShellVersion = ''
}

PowerShellVersion을 설정하면 7.2PowerShell 7.2 이상에서만 모듈을 가져올 수 있습니다.

@{
    PowerShellVersion = '7.2'
}

PowerShellHostName

이 설정은 Windows PowerShell ISE 호스트 또는 ConsoleHost와 같이 모듈에 필요한 PowerShell 호스트 프로그램의 이름을 지정합니다.

입력 형식 System.String
Required 아니요
설정되지 않은 경우 값 $null
와일드카드 허용 아니요

문을 사용하여 세션 $Host.Name 의 호스트 이름을 찾을 수 있습니다. 예를 들어 원격 세션의 호스트가 ConsoleHost 대신 ServerRemoteHost임을 확인할 수 있습니다.

$Host.Name
Enter-PSSession -ComputerName localhost
$Host.Name
ConsoleHost
[localhost]: PS C:\Users\username\Documents> $Host.Name
ServerRemoteHost

이 모듈은 모든 호스트로 가져올 수 있습니다.

@{
    # PowerShellHostName = ''
}

PowerShellHostName을 설정하면 ServerRemoteHost원격 PowerShell 세션에서만 모듈을 가져올 수 있습니다.

@{
    PowerShellHostName = 'ServerRemoteHost'
}

PowerShellHostVersion

이 설정은 모듈에 필요한 PowerShell 호스트 프로그램의 최소 버전을 지정합니다.

입력 형식 System.String
Required 아니요
설정되지 않은 경우 값 $null
와일드카드 허용 아니요

이 설정의 값은 실행할 Import-Module때 변환할 System.Version 수 있어야 합니다.

주의

이 설정은 PowerShellHostName 설정 없이 사용할 수 있지만 예기치 않은 동작의 확률을 높입니다. PowerShellHostName 설정도 사용하는 경우에만 이 설정을 사용합니다.

예를 들어 이 매니페스트의 모듈은 호스트 버전에 관계없이 ConsoleHost에서 실행되는 모든 PowerShell 세션에서 가져올 수 있습니다.

@{
    PowerShellHostName = 'ConsoleHost'
    # PowerShellHostVersion = ''
}

PowerShellHostVersion을 설정5.1하면 호스트 버전이 5.1 이상인 ConsoleHost에서 실행되는 모든 PowerShell 세션에서만 모듈을 가져올 수 있습니다.

@{
    PowerShellHostName    = 'ConsoleHost'
    PowerShellHostVersion = '5.1'
}

DotNetFrameworkVersion

이 설정은 모듈에 필요한 Microsoft .NET Framework의 최소 버전을 지정합니다.

입력 형식 System.String
Required 아니요
설정되지 않은 경우 값 $null
와일드카드 허용 아니요

참고 항목

이 설정은 Windows PowerShell 5.1과 같은 PowerShell Desktop 버전에만 유효하며 4.5보다 낮은 .NET Framework 버전에만 적용됩니다. 이 요구 사항은 최신 버전의 PowerShell 또는 .NET Framework에는 영향을 주지 않습니다.

이 설정의 값은 실행할 Import-Module때 변환할 System.Version 수 있어야 합니다.

예를 들어 이 매니페스트는 Microsoft .NET Framework 버전에 관계없이 모든 PowerShell 또는 Windows PowerShell 세션에서 모듈을 가져올 수 있다고 선언합니다.

@{
    # DotNetFrameworkVersion = ''
}

DotNetFrameworkVersion을 설정4.0하면 사용 가능한 최신 버전의 Microsoft .NET Framework가 4.0 이상인 Windows PowerShell의 모든 세션에서 이 모듈을 가져올 수 있습니다. PowerShell 세션에서 가져올 수도 있습니다.

@{
    DotNetFrameworkVersion = '4.0'
}

CLRVersion

이 설정은 모듈에 필요한 Microsoft .NET Framework CLR(공용 언어 런타임)의 최소 버전을 지정합니다.

입력 형식 System.String
Required 아니요
설정되지 않은 경우 값 $null
와일드카드 허용 아니요

참고 항목

이 설정은 Windows PowerShell 5.1과 같은 PowerShell Desktop 버전에만 유효하며 4.5보다 낮은 .NET Framework 버전에만 적용됩니다. 이 요구 사항은 최신 버전의 PowerShell 또는 .NET Framework에는 영향을 주지 않습니다.

이 설정의 값은 실행할 Import-Module때 변환할 System.Version 수 있어야 합니다.

예를 들어 이 매니페스트는 Microsoft .NET Framework의 CLR 버전에 관계없이 모든 PowerShell 또는 Windows PowerShell 세션에서 모듈을 가져올 수 있다고 선언합니다.

@{
    # CLRVersion = ''
}

CLRVersion을 설정하면 4.0사용 가능한 최신 버전의 CLR이 4.0 이상인 Windows PowerShell의 모든 세션에서 이 모듈을 가져올 수 있습니다. PowerShell 세션에서 가져올 수도 있습니다.

@{
    CLRVersion = '4.0'
}

ProcessorArchitecture

이 설정은 모듈에 필요한 프로세서 아키텍처를 지정합니다.

입력 형식 System.String
허용되는 값 None, MSIL, X86, IA64, Amd64Arm
Required 아니요
설정되지 않은 경우 값 None
와일드카드 허용 아니요

이 설정의 값은 실행할 Import-Module때 변환할 System.Reflection.ProcessorArchitecture 수 있어야 합니다.

예를 들어 이 매니페스트는 시스템의 프로세서 아키텍처에 관계없이 모든 세션에서 모듈을 가져올 수 있음을 선언합니다.

@{
    # ProcessorArchitecture = ''
}

ProcessorArchitecture를 설정하면 Amd64일치하는 아키텍처가 있는 컴퓨터에서 실행되는 세션에서만 이 모듈을 가져올 수 있습니다.

@{
    ProcessorArchitecture = 'Amd64'
}

RequiredModules

이 설정은 전역 세션 상태에 있어야 하는 모듈을 지정합니다. 필요한 모듈이 전역 세션 상태가 아닌 경우 PowerShell에서 모듈을 가져옵니다. 필요한 모듈을 사용할 수 없는 경우 명령이 Import-Module 실패합니다.

입력 형식 System.String[], System.Collections.Hashtable[]
Required 아니요
설정되지 않은 경우 값 $null
와일드카드 허용 아니요

이 설정의 항목은 모듈 이름, 전체 모듈 사양 또는 모듈 파일 경로일 수 있습니다.

값이 경로인 경우 경로는 정규화되거나 상대적일 수 있습니다.

값이 이름 또는 모듈 사양인 경우 PowerShell은 PSModulePath에서 지정된 모듈을 검색합니다.

모듈 사양은 다음 키가 있는 해시 테이블입니다.

  • ModuleName - 필수입니다. 모듈 이름을 지정합니다.
  • GUID - 선택 사항. 모듈의 GUID를 지정합니다.
  • 또한 아래 세 가지 키 중 하나 이상을 지정해야 합니다 . RequiredVersion 키는 키와 MaximumVersion 함께 ModuleVersion 사용할 수 없습니다. 키와 MaximumVersion 키를 함께 지정하여 모듈에 허용되는 버전 범위를 정의할 ModuleVersion 수 있습니다.
    • ModuleVersion - 모듈의 허용 가능한 최소 버전을 지정합니다.
    • RequiredVersion - 모듈의 정확한 필수 버전을 지정합니다.
    • MaximumVersion - 모듈의 허용되는 최대 버전을 지정합니다.

참고 항목

RequiredVersion 가 Windows PowerShell 5.0에 추가되었습니다. MaximumVersion 가 Windows PowerShell 5.1에 추가되었습니다.

예를 들어 이 매니페스트는 해당 모듈의 기능에 다른 모듈이 필요하지 않다고 선언합니다.

@{
    # RequiredModules = @()
}

이 매니페스트는 PSReadLine 모듈이 필요하다고 선언합니다. 이 매니페스트에서 실행 Import-Module 하면 PowerShell은 세션에서 사용할 수 있는 최신 버전의 PSReadLine을 가져옵니다. 사용할 수 있는 버전이 없으면 가져오기에서 오류가 반환됩니다.

@{
    RequiredModules = @(
        'PSReadLine'
    )
}

PowerShell 2.0 Import-Module 에서는 필요한 모듈을 자동으로 가져오지 않습니다. 필요한 모듈이 전역 세션 상태에 있는지 확인합니다.

이 매니페스트는 자체 모듈 폴더에 공급된 PSReadLine 모듈의 버전이 필요하다고 선언합니다. 이 매니페스트에서 실행 Import-Module 하면 PowerShell은 지정된 경로에서 공급업체 PSReadLine을 가져옵니다.

@{
    RequiredModules = @(
        'Vendored\PSReadLine\PSReadLine.psd1'
    )
}

이 매니페스트는 PSReadLine 모듈의 버전 2.0.0이 특별히 필요하다고 선언합니다. 이 매니페스트에서 실행 Import-Module 하면 PowerShell은 사용 가능한 경우 PSReadLine 버전 2.0.0을 가져옵니다. 사용할 수 Import-Module 없는 경우 오류를 반환합니다.

@{
    RequiredModules = @(
        @{
            ModuleName      = 'PSReadLine'
            RequiredVersion = '2.0.0'
        }
    )
}

이 매니페스트는 버전 2.0.0 이상에서 PSReadLine 모듈을 가져와야 한다고 선언합니다.

@{
    RequiredModules = @(
        @{
            ModuleName    = 'PSReadLine'
            ModuleVersion = '2.0.0'
        }
    )
}

이 매니페스트는 버전 2.0.0 이하에서 PSReadLine 모듈을 가져와야 한다고 선언합니다.

@{
    RequiredModules = @(
        @{
            ModuleName     = 'PSReadLine'
            MaximumVersion = '2.0.0'
        }
    )
}

이 매니페스트는 PSDesiredStateConfiguration 모듈을 2.0.0 이상이지만 2.99.99보다 높지 않은 버전에서 가져와야 한다고 선언합니다.

@{
    RequiredModules = @(
        @{
            ModuleName     = 'PSDesiredStateConfiguration'
            ModuleVersion  = '2.0.0'
            MaximumVersion = '2.99.99'
        }
    )
}

RequiredAssemblies

이 설정은 모듈에 필요한 어셈블리(.dll) 파일을 지정합니다. PowerShell은 형식 또는 형식을 업데이트하거나, 중첩된 모듈을 가져오거나, RootModule 키 값에 지정된 모듈 파일을 가져오기 전에 지정된 어셈블리를 로드합니다.

입력 형식 System.String[]
Required 아니요
설정되지 않은 경우 값 $null
와일드카드 허용 아니요

이 설정의 항목은 어셈블리의 파일 이름 또는 하나의 경로일 수 있습니다. NestedModules 설정에서 이진 모듈로도 나열되더라도 필요한 모든 어셈블리를 나열합니다.

이 매니페스트에는 어셈블리가 example.dll 필요합니다. 이 매니페스트에 지정된 서식 또는 형식 파일을 로드하기 전에 PowerShell은 모듈 매니페스트와 example.dll 동일한 디렉터리에 있는 폴더에서 Assemblies 로드합니다.

@{
    RequiredAssemblies = @(
        'Assemblies\Example.dll'
    )
}

ScriptsToProcess

이 설정은 모듈을 가져올 때 호출자의 세션 상태에서 실행되는 스크립트(.ps1) 파일을 지정합니다. 로그인 스크립트를 사용하는 것처럼 이러한 스크립트를 사용하여 환경을 준비할 수 있습니다.

입력 형식 System.String[]
Required 아니요
설정되지 않은 경우 값 $null
와일드카드 허용 아니요

모듈의 세션 상태에서 실행되는 스크립트를 지정하려면 NestedModules 키를 사용합니다.

이 매니페스트를 가져오면 PowerShell이 Initialize.ps1 현재 세션에서 실행됩니다.

@{
    ScriptsToProcess = @(
        'Scripts\Initialize.ps1'
    )
}

예를 들어 정보 메시지를 작성하고 변수를 $ExampleState 설정하는 경우Initialize.ps1:

if ([string]::IsNullOrEmpty($ExampleState)) {
    Write-Information "Example not initialized."
    Write-Information "Initializing now..."
    $ExampleState = 'Initialized'
} else {
    Write-Information "Example already initialized."
}

모듈을 가져오면 스크립트가 실행되어 해당 메시지를 작성하고 세션에서 설정합니다 $ExampleState .

$InformationPreference = 'Continue'
"Example State is: $ExampleState"
Import-Module .\example7x.psd1
"Example State is: $ExampleState"
Import-Module .\example7x.psd1 -Force
Example State is:

Example not initialized.
Initializing now...

Example State is: Initialized

Example already initialized.

TypesToProcess

이 설정은 모듈을 가져올 때 실행되는 형식 파일(.ps1xml)을 지정합니다.

입력 형식 System.String[]
Required 아니요
설정되지 않은 경우 값 $null
와일드카드 허용 아니요

모듈을 가져올 때 PowerShell은 지정된 파일을 사용하여 Update-TypeData cmdlet을 실행합니다. 형식 파일의 범위는 지정되지 않으므로 세션의 모든 세션 상태에 영향을 미칩니다.

형식 파일에 대한 자세한 내용은 about_Types.ps1xml을 참조 하세요.

예를 들어 이 매니페스트를 가져올 때 PowerShell은 모듈 매니페스트와 동일한 디렉터리에 있는 폴더에서 Types 파일에 지정된 Example.ps1xml 형식을 로드합니다.

@{
    TypesToProcess = @(
        'Types\Example.ps1xml'
    )
}

FormatsToProcess

이 설정은 모듈을 가져올 때 실행되는 서식 파일(.ps1xml)을 지정합니다.

입력 형식 System.String[]
Required 아니요
설정되지 않은 경우 값 $null
와일드카드 허용 아니요

모듈을 가져올 때 PowerShell은 지정된 파일을 사용하여 Update-FormatData cmdlet을 실행합니다. 서식 파일의 범위는 지정되지 않으므로 세션의 모든 세션 상태에 영향을 미칩니다.

형식 파일에 대한 자세한 내용은 about_Format.ps1xml을 참조 하세요.

예를 들어 이 모듈을 가져올 때 PowerShell은 모듈 매니페스트와 동일한 디렉터리에 있는 폴더에서 Formats 파일에 지정된 Example.ps1xml 형식을 로드합니다.

@{
    FormatsToProcess = @(
        'Formats\Example.ps1xml'
    )
}

NestedModules

이 설정은 모듈의 세션 상태로 가져오는 스크립트 모듈(.psm1) 및 이진 모듈(.dll)을 지정합니다. 스크립트 파일(.ps1)을 지정할 수도 있습니다. 이 설정의 파일은 나열된 순서대로 실행됩니다.

입력 형식 System.String[], System.Collections.Hashtable[]
Required 아니요
설정되지 않은 경우 값 $null
와일드카드 허용 아니요

이 설정의 항목은 모듈 이름, 전체 모듈 사양 또는 모듈 또는 스크립트 파일의 경로일 수 있습니다.

값이 경로인 경우 경로는 정규화되거나 상대적일 수 있습니다.

값이 모듈 이름 또는 사양인 경우 PowerShell은 PSModulePath에서 지정된 모듈을 검색합니다.

모듈 사양은 다음 키가 있는 해시 테이블입니다.

  • ModuleName - 필수입니다. 모듈 이름을 지정합니다.
  • GUID - 선택 사항. 모듈의 GUID를 지정합니다.
  • 또한 아래 세 가지 키 중 하나 이상을 지정해야 합니다 . RequiredVersion 키는 키와 MaximumVersion 함께 ModuleVersion 사용할 수 없습니다. 키와 MaximumVersion 키를 함께 지정하여 모듈에 허용되는 버전 범위를 정의할 ModuleVersion 수 있습니다.
    • ModuleVersion - 모듈의 허용 가능한 최소 버전을 지정합니다.
    • RequiredVersion - 모듈의 정확한 필수 버전을 지정합니다.
    • MaximumVersion - 모듈의 허용되는 최대 버전을 지정합니다.

참고 항목

RequiredVersion 가 Windows PowerShell 5.0에 추가되었습니다. MaximumVersion 가 Windows PowerShell 5.1에 추가되었습니다.

중첩된 모듈에서 내보내야 하는 모든 항목은 cmdlet을 사용하여 Export-ModuleMember 중첩된 모듈에서 내보내거나 내보내기 속성 중 하나에 나열되어야 합니다.

  • FunctionsToExport
  • CmdletsToExport
  • VariablesToExport
  • AliasesToExport

모듈 세션 상태의 중첩된 모듈은 루트 모듈에서 사용할 수 있지만 호출자의 세션 상태의 명령에 의해 Get-Module 반환되지 않습니다.

이 설정에 나열된 스크립트(.ps1)는 호출자의 세션 상태가 아니라 모듈의 세션 상태에서 실행됩니다. 호출자의 세션 상태에서 스크립트를 실행하려면 ScriptsToProcess 설정에 스크립트 파일 이름을 나열합니다 .

예를 들어 이 매니페스트 Helpers.psm1 를 가져오면 모듈이 루트 모듈의 세션 상태로 로드됩니다. 중첩된 모듈에 선언된 모든 cmdlet은 달리 제한되지 않는 한 내보내집니다.

@{
    NestedModules = @(
        'Helpers\Helpers.psm1'
    )
}

FunctionsToExport

이 설정은 모듈에서 내보내는 함수를 지정합니다. 이 설정을 사용하여 모듈에서 내보낸 함수를 제한할 수 있습니다. 내보낸 함수 목록에서 함수를 제거할 수 있지만 목록에 함수를 추가할 수는 없습니다.

입력 형식 System.String[]
Required 아니요
설정되지 않은 경우 값 $null
와일드카드 허용

와일드카드를 사용하여 이 설정에서 항목을 지정할 수 있습니다. 내보낸 함수 목록에서 일치하는 모든 함수가 내보내집니다.

성능 및 검색 가능성을 위해 와일드카드를 사용하지 않고 모듈이 이 설정에서 내보낼 함수를 항상 명시적으로 나열해야 합니다.

예를 들어 주석 처리된 설정을 사용하여 모듈을 가져오면 루트 모듈의 모든 함수와 중첩된 모듈이 내보내집니다.

@{
    # FunctionsToExport = @()
}

이 매니페스트는 설정을 전혀 지정하지 않는 것과 기능적으로 동일합니다.

@{
    FunctionsToExport = '*'
}

FunctionsToExport를 빈 배열로 설정하면 이 모듈을 가져올 때 루트 모듈 또는 중첩된 모듈 내보내기를 사용할 수 있는 함수가 없습니다.

@{
    FunctionsToExport = @()
}

참고 항목

명령을 사용하여 모듈 매니페스트를 New-ModuleManifest 만들고 FunctionsToExport 매개 변수를 지정하지 않으면 생성된 매니페스트에 이 설정이 빈 배열로 지정됩니다. 매니페스트를 편집하지 않는 한 모듈의 함수는 내보내지지 않습니다.

FunctionsToExport가 함수만 포함 Get-Example 하도록 설정된 경우 이 모듈을 가져올 때 루트 모듈이나 중첩된 모듈에서 다른 함수를 내보낸 경우에도 함수만 Get-Example 사용할 수 있습니다.

@{
    FunctionsToExport = @(
        'Get-Example'
    )
}

FunctionsToExport가 와일드카드 문자열로 설정된 경우 이 모듈을 가져올 때 루트 모듈 또는 중첩된 모듈에서 다른 함수를 Example 모듈 멤버로 내보낸 경우에도 이름이 끝나는 함수를 사용할 수 있습니다.

@{
    FunctionsToExport = @(
        '*Example'
    )
}

CmdletsToExport

이 설정은 모듈에서 내보내는 cmdlet을 지정합니다. 이 설정을 사용하여 모듈에서 내보낸 cmdlet을 제한할 수 있습니다. 내보낸 모듈 멤버 목록에서 cmdlet을 제거할 수 있지만 목록에 cmdlet을 추가할 수는 없습니다.

입력 형식 System.String[]
Required 아니요
설정되지 않은 경우 값 $null
와일드카드 허용

와일드카드를 사용하여 이 설정에서 항목을 지정할 수 있습니다. 내보낸 cmdlet 목록에서 일치하는 모든 cmdlet을 내보냅니다.

성능 및 검색 가능성을 위해 와일드카드를 사용하지 않고 모듈이 이 설정에서 내보낼 cmdlet을 항상 명시적으로 나열해야 합니다.

예를 들어 이 설정이 주석 처리된 모듈을 가져오면 루트 모듈의 모든 cmdlet과 중첩된 모듈이 내보내집니다.

@{
    # CmdletsToExport = @()
}

이 매니페스트는 설정을 전혀 지정하지 않는 것과 기능적으로 동일합니다.

@{
    CmdletsToExport = '*'
}

CmdletsToExport를 빈 배열로 설정하면 이 모듈을 가져올 때 루트 모듈 또는 중첩된 모듈 내보내기를 사용할 수 있는 cmdlet이 없습니다.

@{
    CmdletsToExport = @()
}

참고 항목

명령을 사용하여 모듈 매니페스트를 New-ModuleManifest 만들고 CmdletsToExport 매개 변수를 지정하지 않으면 생성된 매니페스트에 이 설정이 빈 배열로 지정됩니다. 매니페스트를 편집하지 않으면 모듈의 cmdlet이 내보내지지 않습니다.

cmdletsToExport가 cmdlet만 포함 Get-Example 하도록 설정된 경우 이 모듈을 가져올 때 루트 모듈 또는 중첩된 모듈에서 다른 cmdlet을 내보낸 경우에도 cmdlet만 Get-Example 사용할 수 있습니다.

@{
    CmdletsToExport = @(
        'Get-Example'
    )
}

CmdletsToExport가 와일드카드 문자열로 설정된 경우 이 모듈을 가져올 때 루트 모듈 또는 중첩된 모듈에서 다른 cmdlet을 Example 모듈 멤버로 내보낸 경우에도 이름이 끝나는 cmdlet을 사용할 수 있습니다.

@{
    CmdletsToExport = @(
        '*Example'
    )
}

VariablesToExport

이 설정은 모듈에서 내보내는 변수를 지정합니다. 이 설정을 사용하여 모듈에서 내보낸 변수를 제한할 수 있습니다. 내보낸 모듈 멤버 목록에서 변수를 제거할 수 있지만 목록에 변수를 추가할 수는 없습니다.

입력 형식 System.String[]
Required 아니요
설정되지 않은 경우 값 $null
와일드카드 허용

와일드카드를 사용하여 이 설정에서 항목을 지정할 수 있습니다. 내보낸 모듈 멤버 목록에서 일치하는 모든 변수를 내보냅니다.

성능 및 검색 가능성을 위해 와일드카드를 사용하지 않고 모듈이 이 설정에서 내보낼 변수를 항상 명시적으로 나열해야 합니다.

예를 들어 이 설정이 주석 처리된 모듈을 가져오면 루트 모듈의 모든 변수와 중첩된 모듈이 내보내집니다.

@{
    # VariablesToExport = @()
}

이 매니페스트는 설정을 전혀 지정하지 않는 것과 기능적으로 동일합니다.

@{
    VariablesToExport = '*'
}

참고 항목

명령을 사용하여 모듈 매니페스트를 New-ModuleManifest 만들고 VariablesToExport 매개 변수를 지정하지 않으면 생성된 매니페스트에 이 설정이 지정'*'됩니다. 매니페스트를 편집하지 않으면 모듈의 모든 변수가 내보내집니다.

VariablesToExport를 빈 배열로 설정하면 이 모듈을 가져올 때 루트 모듈 또는 중첩된 모듈 내보내기를 사용할 수 있는 변수가 없습니다.

@{
    VariablesToExport = @()
}

VariablesToExport가 변수만 포함 SomeExample 하도록 설정된 경우 이 모듈을 가져올 때 루트 모듈 또는 중첩된 모듈에서 다른 변수를 내보낸 경우에도 변수만 $SomeExample 사용할 수 있습니다.

@{
    VariablesToExport = @(
        'SomeExample'
    )
}

VariablesToExport가 와일드카드 문자열로 설정된 경우 이 모듈을 가져올 때 루트 모듈 또는 중첩된 모듈에서 다른 변수를 Example 모듈 멤버로 내보낸 경우에도 이름이 끝나는 변수를 사용할 수 있습니다.

@{
    VariablesToExport = @(
        '*Example'
    )
}

DscResourcesToExport

이 설정은 모듈에서 내보내는 DSC 리소스를 지정합니다. 이 설정을 사용하여 모듈에서 내보낸 클래스 기반 DSC 리소스를 제한할 수 있습니다. 내보낸 모듈 멤버 목록에서 DSC 리소스를 제거할 수 있지만 목록에 DSC 리소스를 추가할 수는 없습니다.

입력 형식 System.String[]
Required 아니요
설정되지 않은 경우 값 $null
와일드카드 허용

와일드카드를 사용하여 이 설정에서 항목을 지정할 수 있습니다. 모듈에서 일치하는 모든 클래스 기반 DSC 리소스가 내보내집니다.

검색 가능성을 위해 항상 모듈에서 내보내는 모든 DSC 리소스를 명시적으로 나열해야 합니다.

DSC 리소스 작성 및 사용에 대한 자세한 내용은 DSC 설명서를 참조하세요.

이 매니페스트는 루트 모듈 및 중첩된 모듈에 정의된 모든 클래스 기반 및 MOF 기반 DSC 리소스를 내보냅니다.

@{
    # DscResourcesToExport = @()
}

이 매니페스트는 루트 모듈 및 중첩된 모듈에 정의된 모든 MOF 기반 DSC 리소스를 내보내지만 클래스 기반 DSC 리소스 ExampleClassResource는 하나만 내보냅니다.

@{
    DscResourcesToExport = @(
        'ExampleClassResource'
    )
}

이 매니페스트는 포함된 모든 DSC 리소스를 내보냅니다. MOF 기반 리소스가 나열되지 않은 경우에도 모듈은 계속 내보냅니다.

@{
    DscResourcesToExport = @(
        'ExampleClassResource'
        'ExampleMofResourceFirst'
    )
}

ModuleList

이 설정은 이 모듈에 포함된 모듈의 정보 인벤토리 목록입니다. 이 목록은 모듈의 동작에 영향을 주지 않습니다.

입력 형식 System.String[], System.Collections.Hashtable[]
Required 아니요
설정되지 않은 경우 값 $null
와일드카드 허용 아니요

이 설정의 항목은 모듈 이름, 전체 모듈 사양 또는 모듈 또는 스크립트 파일의 경로일 수 있습니다.

값이 경로인 경우 경로는 정규화되거나 상대적일 수 있습니다.

값이 모듈 이름 또는 사양인 경우 PowerShell은 PSModulePath에서 지정된 모듈을 검색합니다.

모듈 사양은 다음 키가 있는 해시 테이블입니다.

  • ModuleName - 필수입니다. 모듈 이름을 지정합니다.
  • GUID - 선택 사항. 모듈의 GUID를 지정합니다.
  • 또한 아래 세 가지 키 중 하나 이상을 지정해야 합니다 . RequiredVersion 키는 키와 MaximumVersion 함께 ModuleVersion 사용할 수 없습니다. 키와 MaximumVersion 키를 함께 지정하여 모듈에 허용되는 버전 범위를 정의할 ModuleVersion 수 있습니다.
    • ModuleVersion - 모듈의 허용 가능한 최소 버전을 지정합니다.
    • RequiredVersion - 모듈의 정확한 필수 버전을 지정합니다.
    • MaximumVersion - 모듈의 허용되는 최대 버전을 지정합니다.

참고 항목

RequiredVersion 가 Windows PowerShell 5.0에 추가되었습니다. MaximumVersion 가 Windows PowerShell 5.1에 추가되었습니다.

이 매니페스트는 포함된 모듈의 정보 목록을 제공하지 않습니다. 모듈이 있을 수도 있고 없을 수도 있습니다. 이 설정을 지정하지 않더라도 RootModule, ScriptsToProcess 또는 NestedModules 설정에 나열된 모든 모듈은 여전히 정상적으로 작동합니다.

@{
    # ModuleList = @()
}

이 매니페스트는 포함된 Example.psm1 유일한 모듈과 하위 모듈 First.psm1Second.psm1 폴더에 있음을 Submodules 선언합니다.

@{
    ModuleList = @(
        'Example.psm1'
        'Submodules\First.psm1'
        'Submodules\Second.psm1'
    )
}

FileList

이 설정은 이 모듈에 포함된 파일의 정보 인벤토리 목록입니다. 이 목록은 모듈의 동작에 영향을 주지 않습니다.

입력 형식 System.String[]
Required 아니요
설정되지 않은 경우 값 $null
와일드카드 허용

이 설정의 항목은 모듈 매니페스트가 포함된 폴더의 파일에 대한 상대 경로여야 합니다.

사용자가 이 설정이 정의된 매니페스트에 대해 호출 Get-Module 하는 경우 FileList 속성에는 이러한 파일에 대한 전체 경로가 포함되어 모듈의 경로를 각 항목의 상대 경로와 조인합니다.

이 매니페스트에는 해당 파일 목록이 포함되지 않습니다.

@{
    # FileList = @()
}

이 매니페스트는 포함된 파일만 이 설정에 나열됨을 선언합니다.

@{
    FileList = @(
        'Example.psd1'
        'Example.psm1'
        'Assemblies\Example.dll'
        'Scripts\Initialize.ps1'
        'Submodules\First.psm1'
        'Submodules\Second.psm1'
    )
}

PrivateData

이 설정은 루트 모듈 범위의 모든 명령 또는 함수에 사용할 수 있는 데이터의 해시 테이블을 정의합니다.

입력 형식 System.Collections.Hashtable
Required PowerShell 갤러리, 크레센도
설정되지 않은 경우 값 $null
와일드카드 허용 아니요

Crescendo 매니페스트를 내보내 새 모듈 Export-CrescendoModule 을 만들 때 PrivateData에 두 개의 키를 추가합니다.

  • CrescendoGenerated - 모듈을 내보낼 때 타임스탬프
  • CrescendoVersion - 모듈을 내보내는 데 사용되는 Crescendo 버전

추적하려는 메타데이터를 저장할 고유 키를 추가할 수 있습니다. 이 설정에 추가된 모든 키는 루트 모듈의 함수 및 cmdlet에서 사용할 수 있습니다 $MyInvocation.MyCommand.Module.PrivateData. 해시 테이블은 모듈 범위 자체에서 사용할 수 없으며 모듈에서 정의한 cmdlet에서만 사용할 수 있습니다.

예를 들어 이 매니페스트는 PrivateData에서 PublishedDate 키를 정의합니다.

@{
    PrivateData = @{
        PublishedDate = '2022-06-01'
    }
}

모듈의 Cmdlet은 변수를 사용하여 이 값에 $MyInvocation 액세스할 수 있습니다.

Function Get-Stale {
    [CmdletBinding()]
    param()

    $PublishedDate = $MyInvocation.MyCommand.Module.PrivateData.PublishedDate
    $CurrentDate = Get-Date

    try {
        $PublishedDate = Get-Date -Date $PublishedDate -ErrorAction Stop
    } catch {
        # The date was set in the manifest, set to an invalid value, or
        # the script module was directly imported without the manifest.
        Throw "Unable to determine published date. Check the module manifest."
    }

    if ($CurrentDate -gt $PublishedDate.AddDays(30)) {
        Write-Warning "This module version was published more than 30 days ago."
    } else {
        $TimeUntilStale = $PublishedDate.AddDays(30) - $CurrentDate
        "This module will be stale in $($TimeUntilStale.Days) days"
    }
}

모듈을 가져오면 함수는 PrivateData값을 사용하여 모듈이 게시된 시기를 결정합니다.

Get-Stale -TestDate '2022-06-15'
Get-Stale -TestDate '2022-08-01'
This module will be stale in 16 days

WARNING: This module version was published more than 30 days ago.

PrivateData.PSData

PSData 자식 속성은 특정 확장 시나리오를 지원하는 값의 해시 테이블을 정의합니다.

입력 형식 System.Collections.Hashtable
Required PowerShell 갤러리, 실험적 기능, Crescendo 모듈
설정되지 않은 경우 값 $null
와일드카드 허용 아니요

PSData 자식 속성은 다음 시나리오에 사용됩니다.

  • PowerShell 갤러리 - cmdlet을 사용하여 New-ModuleManifest 모듈 매니페스트를 만들 때 모듈을 PowerShell 갤러리 게시할 때 필요한 자리 표시자 키를 사용하여 PSData 해시 테이블을 미리 채우세요. 모듈 매니페스트 및 PowerShell 갤러리 게시에 대한 자세한 내용은 PowerShell 갤러리 UI에 영향을 주는 패키지 매니페스트 값을 참조하세요.
  • Crescendo 모듈 - Crescendo 매니페스트를 내보내 새 모듈 Export-CrescendoModule 을 만들 때 PSData.Tags 속성에 값을 CrescendoBuilt 추가합니다. 이 태그를 사용하여 Crescendo를 사용하여 만든 PowerShell 갤러리 모듈을 찾을 수 있습니다. 자세한 내용은 Export-CrescendoModule을 참조 하세요.

HelpInfoURI

이 설정은 모듈에 대한 HelpInfo XML 파일의 인터넷 주소를 지정합니다.

입력 형식 System.String
Required 아니요
설정되지 않은 경우 값 $null
와일드카드 허용 아니요

이 설정의 값은 http 또는 https시작하는 URI(Uniform Resource Identifier)여야 합니다.

HelpInfo XML 파일은 PowerShell 3.0에서 도입된 Updatable 도움말 기능을 지원합니다. 모듈에 대한 다운로드 가능한 도움말 파일의 위치와 지원되는 각 로캘에 대한 최신 도움말 파일의 버전 번호에 대한 정보가 포함되어 있습니다.

호환 가능한 도움말에 대한 자세한 내용은 about_Updatable_Help 참조하세요. HelpInfo XML 파일에 대한 자세한 내용은 Updatable 도움말 지원을 참조 하세요.

예를 들어 이 모듈은 업데이트 가능한 도움말을 지원합니다.

@{
    HelpInfoUri = 'http://https://go.microsoft.com/fwlink/?LinkID=603'
}

DefaultCommandPrefix

이 설정은 세션으로 가져올 때 모듈에 있는 모든 명령의 명사 앞에 추가되는 접두사를 지정합니다. 접두사는 사용자 세션에서 명령 이름 충돌을 방지하는 데 도움이 됩니다.

입력 형식 System.String
Required 아니요
설정되지 않은 경우 값 $null
와일드카드 허용 아니요

모듈 사용자는 cmdlet의 접두사 매개 변수를 지정하여 이 접두 사를 재정의할 Import-Module 수 있습니다.

이 설정은 PowerShell 3.0에서 도입되었습니다.

이 매니페스트를 가져오면 이 모듈에서 가져온 모든 cmdlet이 이름 앞에 명사 앞에 추가됩니다 Example . 예를 들어 . Get-Item Get-ExampleItem

@{
    DefaultCommandPrefix = 'Example'
}

참고 항목