about_Module_Manifests

Kısa açıklama

Modül bildirim dosyalarını yazmak için ayarları ve uygulamaları açıklar.

Uzun açıklama

Modül bildirimi, karma tablo içeren bir PowerShell veri dosyasıdır (.psd1). Karma tablodaki anahtar-değer çiftleri modülün içeriğini ve özniteliklerini açıklar, önkoşulları tanımlar ve bileşenlerin nasıl işlendiğini denetler.

Bildirimlerin bir modülü yüklemek için gerekli değildir, ancak PowerShell Galerisi bir modül yayımlamaları gerekir. Bildirimler ayrıca modülünüzün uygulamasını yükleme yönteminden ayırmanıza da olanak tanır. Bir bildirimle gereksinimleri, uyumluluğu, yükleme sırasını ve daha fazlasını tanımlayabilirsiniz.

Bildirimin ayarları için herhangi bir parametre belirtmeden kullandığınızda New-ModuleManifest , en az bir bildirim dosyası yazar. Aşağıdaki kod parçacığı, kısa bir açıklama ve aralık alıntısı olan bu varsayılan çıkışı gösterir:

@{
# 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 = ''
}

Modülünüzü yayımlamadan önce modül bildirimini doğrulamak için komutunu kullanabilirsiniz Test-ModuleManifest . Test-ModuleManifest bildirim geçersizse veya oturum bildirimde ayarlanan gereksinimleri karşılamadığından modül geçerli oturuma aktarılamıyorsa bir hata döndürür.

Modül bildiriminde betik kodu kullanma

Bildirim dosyasındaki ayarlara atanan değerler, PowerShell tarafından değerlendirilen ifadeler olabilir. Bu, yolları oluşturmanıza ve değişkenlere göre koşullu olarak değerler atamanıza olanak tanır.

kullanarak Import-Modulebir modülü içeri aktardığınızda, bildirim dil modunda Restricted değerlendirilir. Restricted modu, kullanılabilecek komutları ve değişkenleri sınırlar.

İzin verilen komutlar

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

İzin verilen değişkenler

  • $PSScriptRoot
  • $PSEdition
  • $EnabledExperimentalFeatures
  • Herhangi bir ortam değişkeni, örneğin $ENV:TEMP

Daha fazla bilgi için bkz . about_Language_Modes.

Bildirim ayarları

Aşağıdaki bölümlerde bir modül bildirimindeki kullanılabilir tüm ayarlar ve bunları nasıl kullanabileceğiniz açıklanmıştır. Bunlar ayarın bir özetiyle başlar ve ardından aşağıdakileri listeleyen bir matris izler:

  • Giriş türü: Bildirimde bu ayar için belirtebileceğiniz nesne türü.
  • Gerekli: Bu değer iseYes, hem modülü içeri aktarmak hem de PowerShell Galerisi yayımlamak için bu ayar gereklidir. Noise, ikisi için de gerekli değildir. isePowerShell Gallery, yalnızca PowerShell Galerisi yayımlamak için gereklidir.
  • Ayarlanmamışsa değer: Bu ayarın içeri aktarıldığında sahip olduğu ve açıkça ayarlanmadığı değerdir.
  • Joker karakterleri kabul eder: Bu ayarın joker karakter değeri alıp alamayacağı.

RootModule

Bu ayar modülün birincil veya kök dosyasını belirtir. Modül içeri aktarıldığında, kök modül dosyası tarafından dışarı aktarılan üyeler çağıranın oturum durumuna aktarılır.

Değer
Giriş Türü System.String
Gerekli Hayır
Ayarlanmamışsa değer $null
Joker karakterleri kabul eder Hayır

Değer aşağıdakilerden birinin yolu olmalıdır:

  • betik (.ps1)
  • betik modülü (.psm1)
  • modül bildirimi (.psd1)
  • derleme (.dll)
  • cmdlet tanım XML dosyası (.cdxml)
  • Windows PowerShell 5.1 İş Akışı (.xaml)

Yol, modül bildirimine göre olmalıdır.

Bir modül bildiriminde RootModule anahtarında belirlenmiş bir kök dosyası yoksa, bildirim modülün birincil dosyası olur ve modül bir bildirim modülüne (ModuleType = Bildirim) dönüşür. RootModule tanımlandığında modülün türü, kullanılan dosya uzantısından belirlenir:

  • a .ps1 veya .psm1 dosyası, betik modül türünü oluşturur
  • bir .psd1 dosya, bildirim modül türünü oluşturur
  • bir .dll dosya, modül türünü İkili yapar
  • bir .cdxml dosya modül türünü CIM yapar
  • bir .xaml dosya, iş akışı modül türünü oluşturur

Varsayılan olarak, RootModule'deki tüm modül üyeleri dışarı aktarılır.

İpucu

Modül yükleme hızı İkili, Betik ve CIM modül türleri arasında farklılık gösterir. Daha fazla bilgi için bkz. PowerShell modülü yazma konuları

Örneğin, bu modülün ModuleType'ı Manifest şeklindedir. Bu modülün dışarı aktarabileceği tek modül üyeleri, NestedModules ayarıyla belirtilen modüllerde tanımlananlardır .

@{
    RootModule = ''
}

Not

Bu ayar modül bildirimlerinde ModuleToProcess olarak da belirtilebilir. Bu ayarın adı geçerli olsa da, bunun yerine RootModule kullanmak en iyi yöntemdir.

ModuleVersion

Bu ayar modülün sürümünü belirtir. Sistemde bir modülün birden çok sürümü varsa, çalıştırdığınızda Import-Modulevarsayılan olarak en son sürüm yüklenir.

Değer
Giriş Türü System.String
Required Yes
Ayarlanmamışsa değer Hiçbiri
Joker karakterleri kabul eder Hayır

çalıştırdığınızda Import-Modulebu ayarın değeri dönüştürülebilir System.Version olmalıdır.

Örneğin, bu bildirim modülün sürümünü olarak '1.2.3'bildirir.

@{
    ModuleVersion = '1.2.3'
}

Modülü içeri aktarıp Version özelliğini incelediğinizde, bunun bir dize değil System.Version nesnesi olduğuna dikkat edin:

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

Version

UyumluPSEditions

Bu ayar modülün uyumlu PSEditions'ını belirtir.

Değer
Giriş Türü System.String[]
Kabul Edilen Değerler Desktop, Core
Gerekli Hayır
Ayarlanmamışsa değer $null
Joker karakterleri kabul eder Hayır

Bu ayarın değeri ise $null, modülü oturum psedition ne olursa olsun içeri aktarılabilir. Kabul edilen değerlerden birine veya daha fazlasına ayarlayabilirsiniz.

PSEdition hakkında bilgi için bkz:

Bu ayar tanımlandığında modül yalnızca otomatik değişkenin değerinin $PSEdition ayara dahil edildiği bir oturuma aktarılabilir.

Not

$PSEdition Otomatik değişken sürüm 5.1'de sunulduğundan, Windows PowerShell'in eski sürümleri CompatiblePSEditions ayarını kullanan bir modülü yükleyemez.

Örneğin, bu modül bildirimini herhangi bir oturumda içeri aktarabilirsiniz:

@{
    # CompatiblePSEditions = @()
}

Belirtilen ayarla, bu modül yalnızca otomatik değişkenin değerinin $PSEdition Coreolduğu oturumlarda içeri aktarılabilir.

@{
    CompatiblePSEditions = @('Core')
}

GUID

Bu ayar modül için benzersiz bir tanımlayıcı belirtir. GUID, aynı ada sahip modülleri ayırt etmek için kullanılır.

Değer
Giriş Türü System.String
Gerekli Hayır
Ayarlanmamışsa değer 00000000-0000-0000-0000-000000000000
Joker karakterleri kabul eder Hayır

çalıştırdığınızda Import-Modulebu ayarın değeri dönüştürülebilir System.Guid olmalıdır.

Dikkat

Gerekli bir ayar olmasa da, bildirimde GUID belirtilmemesi hiçbir avantaj sağlamaz ve modüller için ad çakışmalarına neden olabilir.

Bildiriminizde kullanmak için yeni bir guid oluşturabilirsiniz:

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

Makinede aynı ada sahip başka bir modül varsa, modülün tam adını belirterek istediğiniz modülü içeri aktarmaya devam edebilirsiniz:

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

Yazma

Bu ayar modül yazarını tanımlar.

Değer
Giriş Türü System.String
Required PowerShell Galerisi
Ayarlanmamışsa değer $null
Joker karakterleri kabul eder Hayır

Bu bildirim, modülün yazarının Contoso Geliştirici Deneyimi Ekibi olduğunu bildirir.

@{
    Author = 'Contoso Developer Experience Team'
}

CompanyName

Bu ayar, modülü oluşturan şirketi veya satıcıyı tanımlar.

Değer
Giriş Türü System.String
Gerekli Hayır
Ayarlanmamışsa değer $null
Joker karakterleri kabul eder Hayır

Bu bildirim, modülün Contoso, Ltd. tarafından oluşturulduğunu bildirir.

@{
    CompanyName = 'Contoso, Ltd.'
}

Bu ayar modül için bir telif hakkı bildirimi belirtir.

Değer
Giriş Türü System.String
Gerekli Hayır
Ayarlanmamışsa değer $null
Joker karakterleri kabul eder Hayır

Bu bildirim, 2022'den itibaren Contoso, Ltd. için tüm hakların saklı olduğu bir telif hakkı bildirimi bildirir.

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

Açıklama

Bu ayar, modülü yüksek düzeyde açıklar.

Değer
Giriş Türü System.String
Required PowerShell Galerisi
Ayarlanmamışsa değer $null
Joker karakterleri kabul eder Hayır

Bu bildirim kısa bir açıklama içerir. Daha uzun veya çok satırlı bir açıklama yazmak için here-string de kullanabilirsiniz.

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

PowerShellVersion

Bu ayar, bu modülün gerektirdiği en düşük PowerShell sürümünü belirtir.

Değer
Giriş Türü System.String
Gerekli Hayır
Ayarlanmamışsa değer $null
Joker karakterleri kabul eder Hayır

çalıştırdığınızda Import-Modulebu ayarın değeri dönüştürülebilir System.Version olmalıdır.

Bu ayar ayarlı değilse PowerShell modülün içeri aktarma işlemini geçerli sürüme göre kısıtlamaz.

Örneğin, bu bildirim modülün PowerShell ve Windows PowerShell'in her sürümüyle uyumlu olduğunu bildirir.

@{
    # PowerShellVersion = ''
}

PowerShellVersion olarak 7.2ayarlandığında modülü yalnızca PowerShell 7.2 veya sonraki sürümlerde içeri aktarabilirsiniz.

@{
    PowerShellVersion = '7.2'
}

PowerShellHostName

Bu ayar, modülün gerektirdiği Windows PowerShell ISE Konağı veya ConsoleHost gibi PowerShell konak programının adını belirtir.

Değer
Giriş Türü System.String
Gerekli Hayır
Ayarlanmamışsa değer $null
Joker karakterleri kabul eder Hayır

Deyimiyle bir oturum için konağın $Host.Name adını bulabilirsiniz. Örneğin, uzak oturum için konağın ConsoleHost yerine ServerRemoteHost olduğunu görebilirsiniz:

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

Bu modül herhangi bir konağa aktarılabilir.

@{
    # PowerShellHostName = ''
}

PowerShellHostName olarak ServerRemoteHostayarlandığında, modülü yalnızca uzak bir PowerShell oturumunda içeri aktarabilirsiniz.

@{
    PowerShellHostName = 'ServerRemoteHost'
}

PowerShellHostVersion

Bu ayar, modülün gerektirdiği en düşük PowerShell konak programı sürümünü belirtir.

Değer
Giriş Türü System.String
Gerekli Hayır
Ayarlanmamışsa değer $null
Joker karakterleri kabul eder Hayır

çalıştırdığınızda Import-Modulebu ayarın değeri dönüştürülebilir System.Version olmalıdır.

Dikkat

Bu ayar PowerShellHostName ayarı olmadan kullanılabilse de beklenmeyen davranış olasılığını artırır. Bu ayarı yalnızca PowerShellHostName ayarını da kullanırken kullanın.

Örneğin, bu bildirimin modülü konağın sürümünden bağımsız olarak ConsoleHost'ta çalışan herhangi bir PowerShell oturumundan içeri aktarılabilir.

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

PowerShellHostVersion olarak 5.1ayarlandığında, modülü yalnızca konağın sürümü 5.1 veya üzeri olan ConsoleHost'ta çalışan herhangi bir PowerShell oturumundan içeri aktarabilirsiniz.

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

DotNetFrameworkVersion

Bu ayar, modülün gerektirdiği en düşük Microsoft .NET Framework sürümünü belirtir.

Değer
Giriş Türü System.String
Gerekli Hayır
Ayarlanmamışsa değer $null
Joker karakterleri kabul eder Hayır

Not

Bu ayar yalnızca Windows PowerShell 5.1 gibi PowerShell Desktop sürümü için geçerlidir ve yalnızca 4.5'ten küçük .NET Framework sürümleri için geçerlidir. Bu gereksinimin PowerShell'in veya .NET Framework'ün daha yeni sürümleri için hiçbir etkisi yoktur.

çalıştırdığınızda Import-Modulebu ayarın değeri dönüştürülebilir System.Version olmalıdır.

Örneğin, bu bildirim modülünün Microsoft .NET Framework sürümünden bağımsız olarak herhangi bir PowerShell veya Windows PowerShell oturumunda içeri aktarılabildiğini bildirir.

@{
    # DotNetFrameworkVersion = ''
}

DotNetFrameworkVersion olarak 4.0ayarlandığında, bu modülü Microsoft .NET Framework'ün kullanılabilir en son sürümünün en az 4.0 olduğu herhangi bir Windows PowerShell oturumunda içeri aktarabilirsiniz. Ayrıca herhangi bir PowerShell oturumunda da içeri aktarabilirsiniz.

@{
    DotNetFrameworkVersion = '4.0'
}

CLRVersion

Bu ayar, modülün gerektirdiği Microsoft .NET Framework'ün Ortak Dil Çalışma Zamanı'nın (CLR) en düşük sürümünü belirtir.

Değer
Giriş Türü System.String
Gerekli Hayır
Ayarlanmamışsa değer $null
Joker karakterleri kabul eder Hayır

Not

Bu ayar yalnızca Windows PowerShell 5.1 gibi PowerShell Desktop sürümü için geçerlidir ve yalnızca 4.5'ten küçük .NET Framework sürümleri için geçerlidir. Bu gereksinimin PowerShell'in veya .NET Framework'ün daha yeni sürümleri için hiçbir etkisi yoktur.

çalıştırdığınızda Import-Modulebu ayarın değeri dönüştürülebilir System.Version olmalıdır.

Örneğin, bu bildirim modülünün Microsoft .NET Framework'ün CLR sürümünün sürümünden bağımsız olarak herhangi bir PowerShell veya Windows PowerShell oturumunda içeri aktarılabildiğini bildirir.

@{
    # CLRVersion = ''
}

CLRVersion olarak 4.0ayarlandığında, bu modülü, CLR'nin kullanılabilir en son sürümünün en az 4.0 olduğu herhangi bir Windows PowerShell oturumunda içeri aktarabilirsiniz. Ayrıca herhangi bir PowerShell oturumunda da içeri aktarabilirsiniz.

@{
    CLRVersion = '4.0'
}

ProcessorArchitecture

Bu ayar, modülün gerektirdiği işlemci mimarisini belirtir.

Değer
Giriş Türü System.String
Kabul Edilen Değerler None, MSIL, X86, , IA64, Amd64, Arm
Gerekli Hayır
Ayarlanmamışsa değer None
Joker karakterleri kabul eder Hayır

çalıştırdığınızda Import-Modulebu ayarın değeri dönüştürülebilir System.Reflection.ProcessorArchitecture olmalıdır.

Örneğin, bu bildirim, modülünün sistemin işlemci mimarisinden bağımsız olarak herhangi bir oturumda içeri aktarılabildiğini bildirir.

@{
    # ProcessorArchitecture = ''
}

ProcessorArchitecture olarak Amd64ayarlandığında, bu modülü yalnızca eşleşen mimariye sahip bir makinede çalışan bir oturumda içeri aktarabilirsiniz.

@{
    ProcessorArchitecture = 'Amd64'
}

RequiredModules

Bu ayar, genel oturum durumunda olması gereken modülleri belirtir. Gerekli modüller genel oturum durumunda değilse PowerShell bunları içeri aktarır. Gerekli modüller kullanılamıyorsa Import-Module , komut başarısız olur.

Değer
Giriş Türü System.String[], System.Collections.Hashtable[]
Gerekli Hayır
Ayarlanmamışsa değer $null
Joker karakterleri kabul eder Hayır

Bu ayarın girdileri modül adı, tam modül belirtimi veya modül dosyasının yolu olabilir.

Değer bir yol olduğunda, yol tam veya göreli olabilir.

Değer bir ad veya modül belirtimi olduğunda PowerShell , PSModulePath'de belirtilen modülü arar.

Modül belirtimi, aşağıdaki anahtarlara sahip bir karma tablodur.

  • ModuleName - Gerekli. Modül adını belirtir.
  • GUID - İsteğe bağlı. Modülün GUID değerini belirtir.
  • Ayrıca aşağıdaki üç anahtardan en az birini belirtmek gerekir . Anahtar RequiredVersion veya MaximumVersion tuşlarıyla ModuleVersion kullanılamaz. ve MaximumVersion anahtarlarını birlikte belirterek ModuleVersion modül için kabul edilebilir bir sürüm aralığı tanımlayabilirsiniz.
    • ModuleVersion - Modülün kabul edilebilir en düşük sürümünü belirtir.
    • RequiredVersion - Modülün tam, gerekli bir sürümünü belirtir.
    • MaximumVersion - Modülün kabul edilebilir en yüksek sürümünü belirtir.

Not

RequiredVersion , Windows PowerShell 5.0'a eklendi. MaximumVersion , Windows PowerShell 5.1'e eklendi.

Örneğin, bu bildirim modülünün işlevselliği için başka modül gerektirmediğini bildirir.

@{
    # RequiredModules = @()
}

Bu bildirim, PSReadLine modülünü gerektirdiğini bildirir. Bu bildirimde çalıştırdığınızda Import-Module PowerShell, oturumda kullanılabilen en son PSReadLine sürümünü içeri aktarır. Kullanılabilir sürüm yoksa içeri aktarma işlemi bir hata döndürür.

@{
    RequiredModules = @(
        'PSReadLine'
    )
}

İpucu

PowerShell 2.0'da gerekli Import-Module modülleri otomatik olarak içeri aktarmaz. Yalnızca gerekli modüllerin genel oturum durumunda olduğunu doğrular.

Bu bildirim, kendi modül klasöründe satıcıya sunulan PSReadLine modülünün bir sürümünü gerektirdiğini bildirir. Bu bildirimde çalıştırdığınızda Import-Module PowerShell, satıcıya sunulan PSReadLine'ı belirtilen yoldan içeri aktarır.

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

Bu bildirim özellikle PSReadLine modülünün 2.0.0 sürümünü gerektirdiğini bildirir. Bu bildirimde çalıştırdığınızda Import-Module PowerShell, varsa PSReadLine'ın 2.0.0 sürümünü içeri aktarır. Kullanılamıyorsa Import-Module bir hata döndürür.

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

Bu bildirim, PSReadLine modülünün 2.0.0 veya üzeri bir sürümde içeri aktarılmasını gerektirdiğini bildirir.

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

Bu bildirim, PSReadLine modülünün 2.0.0 veya daha düşük bir sürümde içeri aktarılmasını gerektirdiğini bildirir.

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

Bu bildirim, PSDesiredStateConfiguration modülünün 2.0.0'a eşit veya 2.99.99'dan yüksek olmayan bir sürümde içeri aktarılmasını gerektirdiğini bildirir.

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

RequiredAssemblies

Bu ayar, modülün gerektirdiği derleme (.dll) dosyalarını belirtir. PowerShell türleri veya biçimleri güncelleştirmeden, iç içe modülleri içeri aktarmadan veya RootModule anahtarının değerinde belirtilen modül dosyasını içeri aktarmadan önce belirtilen derlemeleri yükler.

Değer
Giriş Türü System.String[]
Gerekli Hayır
Ayarlanmamışsa değer $null
Joker karakterleri kabul eder Hayır

Bu ayarın girdileri, derlemenin dosya adı veya bir derlemenin yolu olabilir. NestedModules ayarında ikili modüller olarak listelenseler bile tüm gerekli derlemeleri listeleyin.

Bu bildirim için derleme gerekir example.dll . Bu bildirimde belirtilen biçimlendirme veya tür dosyalarını yüklemeden önce PowerShell, modül bildirimiyle aynı dizinde bulunan klasörden yüklenir example.dll Assemblies .

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

ScriptsToProcess

Bu ayar, modül içeri aktarıldığında çağıranın oturum durumunda çalıştırılan betik (.ps1) dosyalarını belirtir. Bu betikleri, oturum açma betiği gibi bir ortam hazırlamak için de kullanabilirsiniz.

Değer
Giriş Türü System.String[]
Gerekli Hayır
Ayarlanmamışsa değer $null
Joker karakterleri kabul eder Hayır

Modülün oturum durumunda çalıştırılan betikleri belirtmek için NestedModules anahtarını kullanın.

Bu bildirimi içeri aktardığınızda, PowerShell geçerli oturumunuzda öğesini Initialize.ps1 çalıştırır.

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

Örneğin, bilgilendiren iletiler yazar ve değişkenini $ExampleState ayarlarsaInitialize.ps1:

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

Modülü içeri aktardığınızda betik çalıştırılır, bu iletiler yazılır ve oturumunuzda ayarlanır $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

Bu ayar, modül içeri aktarıldığında çalıştırılan tür dosyalarını (.ps1xml) belirtir.

Değer
Giriş Türü System.String[]
Gerekli Hayır
Ayarlanmamışsa değer $null
Joker karakterleri kabul eder Hayır

Modülü içeri aktardığınızda, PowerShell cmdlet'ini Update-TypeData belirtilen dosyalarla çalıştırır. Tür dosyalarının kapsamı olmadığından, bunlar oturumdaki tüm oturum durumlarını etkiler.

Tür dosyaları hakkında daha fazla bilgi için bkz . about_Types.ps1xml

Örneğin, bu bildirimi içeri aktardığınızda PowerShell, modül bildirimiyle aynı dizinde Example.ps1xml bulunan klasörden dosyada Types belirtilen türleri yükler.

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

FormatsToProcess

Bu ayar, modül içeri aktarıldığında çalıştırılan biçimlendirme dosyalarını (.ps1xml) belirtir.

Değer
Giriş Türü System.String[]
Gerekli Hayır
Ayarlanmamışsa değer $null
Joker karakterleri kabul eder Hayır

Bir modülü içeri aktardığınızda, PowerShell cmdlet'ini Update-FormatData belirtilen dosyalarla çalıştırır. Biçimlendirme dosyalarının kapsamı olmadığından, bunlar oturumdaki tüm oturum durumlarını etkiler.

Tür dosyaları hakkında daha fazla bilgi için bkz . about_Format.ps1xml

Örneğin, bu modülü içeri aktardığınızda PowerShell, modül bildirimiyle aynı dizinde Example.ps1xml bulunan klasörden dosyada Formats belirtilen biçimleri yükler.

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

nestedModules

Bu ayar, modülün oturum durumuna aktarılan betik modüllerini (.psm1) ve ikili modülleri (.dll) belirtir. Betik dosyalarını da belirtebilirsiniz (.ps1). Bu ayardaki dosyalar listelendikleri sırayla çalışır.

Değer
Giriş Türü System.String[], System.Collections.Hashtable[]
Gerekli Hayır
Ayarlanmamışsa değer $null
Joker karakterleri kabul eder Hayır

Bu ayarın girdileri bir modül adı, tam modül belirtimi veya modül ya da betik dosyasının yolu olabilir.

Değer bir yol olduğunda, yol tam veya göreli olabilir.

Değer bir modül adı veya belirtimi olduğunda PowerShell , PSModulePath'de belirtilen modülü arar.

Modül belirtimi, aşağıdaki anahtarlara sahip bir karma tablodur.

  • ModuleName - Gerekli. Modül adını belirtir.
  • GUID - İsteğe bağlı. Modülün GUID değerini belirtir.
  • Ayrıca aşağıdaki üç anahtardan en az birini belirtmek gerekir . Anahtar RequiredVersion veya MaximumVersion tuşlarıyla ModuleVersion kullanılamaz. ve MaximumVersion anahtarlarını birlikte belirterek ModuleVersion modül için kabul edilebilir bir sürüm aralığı tanımlayabilirsiniz.
    • ModuleVersion - Modülün kabul edilebilir en düşük sürümünü belirtir.
    • RequiredVersion - Modülün tam, gerekli bir sürümünü belirtir.
    • MaximumVersion - Modülün kabul edilebilir en yüksek sürümünü belirtir.

Not

RequiredVersion , Windows PowerShell 5.0'a eklendi. MaximumVersion , Windows PowerShell 5.1'e eklendi.

İç içe modülden dışarı aktarılması gereken öğeler, cmdlet'i kullanılarak Export-ModuleMember iç içe modül tarafından dışarı aktarılmalıdır veya dışarı aktarma özelliklerinden birinde listelenmelidir:

  • FunctionsToExport
  • CmdletsToExport
  • VariablesToExport
  • AliasesToExport

Modül oturum durumundaki iç içe yerleştirilmiş modüller kök modülde kullanılabilir, ancak çağıranın oturum durumundaki bir Get-Module komut tarafından döndürülemez.

Bu ayarda listelenen betikler (.ps1), çağıranın oturum durumunda değil modülün oturum durumunda çalıştırılır. Çağıranın oturum durumunda bir betik çalıştırmak için ScriptToProcess ayarında betik dosya adını listeleyin .

Örneğin, bu bildirimi içeri aktardığınızda modül Helpers.psm1 kök modülün oturum durumuna yüklenir. İç içe modülde bildirilen tüm cmdlet'ler, aksi kısıtlanmadığı sürece dışarı aktarılır.

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

FunctionsToExport

Bu ayar, modülün dışarı aktardığını işlevleri belirtir. Modül tarafından dışarı aktarılan işlevleri kısıtlamak için bu ayarı kullanabilirsiniz. Dışarı aktarılan işlevler listesinden işlevleri kaldırabilir, ancak listeye işlev ekleyemez.

Değer
Giriş Türü System.String[]
Gerekli Hayır
Ayarlanmamışsa değer $null
Joker karakterleri kabul eder Yes

Bu ayardaki girdileri joker karakterlerle belirtebilirsiniz. Dışarı aktarılan işlevler listesindeki tüm eşleşen işlevler dışarı aktarılır.

İpucu

Performans ve bulunabilirlik için, modülünüzün bu ayarda herhangi bir joker karakter kullanmadan dışarı aktarmasını istediğiniz işlevleri her zaman açıkça listelemeniz gerekir.

Örneğin, ayarın açıklama eklendiği bir modülü içeri aktardığınızda, kök modüldeki tüm işlevler ve iç içe yerleştirilmiş modüller dışarı aktarılır.

@{
    # FunctionsToExport = @()
}

Bu bildirim, ayarın belirtilmemesiyle işlevsel olarak aynıdır.

@{
    FunctionsToExport = '*'
}

FunctionsToExport boş bir dizi olarak ayarlandığında, bu modülü içeri aktardığınızda kök modül veya iç içe modülleri dışarı aktarma kullanılabilir değildir.

@{
    FunctionsToExport = @()
}

Not

Komutuyla New-ModuleManifest modül bildiriminizi oluşturur ve FunctionsToExport parametresini belirtmezseniz, oluşturulan bildirimde bu ayar boş bir dizi olarak belirtilir. Bildirimi düzenlemediğiniz sürece modüldeki hiçbir işlev dışarı aktarılmaz.

FunctionsToExport yalnızca işlevi içerecek Get-Example şekilde ayarlandığında, bu modülü içeri aktardığınızda, diğer işlevler kök modül veya iç içe yerleştirilmiş modüller tarafından dışarı aktarılmış olsa bile yalnızca Get-Example işlev kullanılabilir duruma getirilir.

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

FunctionsToExport bir joker karakter dizesiyle ayarlandığında, bu modülü içeri aktardığınızda, diğer işlevler kök modül veya iç içe yerleştirilmiş modüller tarafından modül üyesi olarak dışarı aktarılmış olsa bile adı ile Example biten herhangi bir işlev kullanılabilir hale getirilir.

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

CmdletsToExport

Bu ayar, modülün dışarı aktarıldığı cmdlet'leri belirtir. Modül tarafından dışarı aktarılan cmdlet'leri kısıtlamak için bu ayarı kullanabilirsiniz. Dışarı aktarılan modül üyeleri listesinden cmdlet'leri kaldırabilir, ancak listeye cmdlet ekleyemez.

Değer
Giriş Türü System.String[]
Gerekli Hayır
Ayarlanmamışsa değer $null
Joker karakterleri kabul eder Yes

Bu ayardaki girdileri joker karakterlerle belirtebilirsiniz. Dışarı aktarılan cmdlet'ler listesindeki tüm eşleşen cmdlet'ler dışarı aktarılır.

İpucu

Performans ve bulunabilirlik için, modülünüzün bu ayarda herhangi bir joker karakter kullanmadan dışarı aktarmasını istediğiniz cmdlet'leri her zaman açıkça listelemeniz gerekir.

Örneğin, bu ayar açıklama eklenmiş bir modülü içeri aktardığınızda, kök modüldeki tüm cmdlet'ler ve iç içe yerleştirilmiş modüller dışarı aktarılır.

@{
    # CmdletsToExport = @()
}

Bu bildirim, ayarın belirtilmemesiyle işlevsel olarak aynıdır.

@{
    CmdletsToExport = '*'
}

CmdletsToExport boş bir dizi olarak ayarlandığında, bu modülü içeri aktardığınızda kök modül veya iç içe modül dışarı aktarma işlemi kullanılamaz.

@{
    CmdletsToExport = @()
}

Not

Komutuyla New-ModuleManifest modül bildiriminizi oluşturur ve CmdletsToExport parametresini belirtmezseniz, oluşturulan bildirimde bu ayar boş bir dizi olarak belirtilir. Bildirimi düzenlemediğiniz sürece modüldeki hiçbir cmdlet dışarı aktarılmaz.

Cmdlet'lerToExport yalnızca cmdlet'i içerecek Get-Example şekilde ayarlandığında, bu modülü içeri aktardığınızda, diğer cmdlet'ler kök modül veya iç içe yerleştirilmiş modüller tarafından dışarı aktarılmış olsa bile yalnızca Get-Example cmdlet kullanılabilir duruma getirilir.

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

CmdletsToExport bir joker karakter dizesiyle ayarlandığında, bu modülü içeri aktardığınızda, diğer cmdlet'ler kök modül veya iç içe yerleştirilmiş modüller tarafından modül üyesi olarak dışarı aktarılmış olsa bile adı ile Example biten cmdlet'ler kullanılabilir duruma getirilir.

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

VariablesToExport

Bu ayar, modülün dışarı aktardığını değişkenleri belirtir. Modül tarafından dışarı aktarılan değişkenleri kısıtlamak için bu ayarı kullanabilirsiniz. Dışarı aktarılan modül üyeleri listesinden değişkenleri kaldırabilir, ancak listeye değişken ekleyemez.

Değer
Giriş Türü System.String[]
Gerekli Hayır
Ayarlanmamışsa değer $null
Joker karakterleri kabul eder Yes

Bu ayardaki girdileri joker karakterlerle belirtebilirsiniz. Dışarı aktarılan modül üyeleri listesindeki tüm eşleşen değişkenler dışarı aktarılır.

İpucu

Performans ve bulunabilirlik için, modülünüzün bu ayarda herhangi bir joker karakter kullanmadan dışarı aktarmasını istediğiniz değişkenleri her zaman açıkça listelemeniz gerekir.

Örneğin, bu ayarın açıklama eklendiği bir modülü içeri aktardığınızda, kök modüldeki tüm değişkenler ve iç içe yerleştirilmiş modüller dışarı aktarılır.

@{
    # VariablesToExport = @()
}

Bu bildirim, ayarın belirtilmemesiyle işlevsel olarak aynıdır.

@{
    VariablesToExport = '*'
}

Not

komutuyla New-ModuleManifest modül bildiriminizi oluşturursanız ve VariablesToExport parametresini belirtmezseniz, oluşturulan bildirimde bu ayar olarak '*'belirtilir. Bildirimi düzenlemediğiniz sürece modüldeki tüm değişkenler dışarı aktarılır.

VariablesToExport boş bir dizi olarak ayarlandığında, bu modülü içeri aktardığınızda kök modül veya iç içe yerleştirilmiş modül dışarı aktarma işlemi kullanılamaz.

@{
    VariablesToExport = @()
}

VariablesToExport yalnızca değişkeni içerecek SomeExample şekilde ayarlandığında, bu modülü içeri aktardığınızda, diğer değişkenler kök modül veya iç içe yerleştirilmiş modüller tarafından dışarı aktarılmış olsa bile yalnızca $SomeExample değişken kullanılabilir duruma getirilir.

@{
    VariablesToExport = @(
        'SomeExample'
    )
}

VariablesToExport bir joker karakter dizesiyle ayarlandığında, bu modülü içeri aktardığınızda, diğer değişkenler kök modül veya iç içe yerleştirilmiş modüller tarafından modül üyesi olarak dışarı aktarılsa bile adı ile Example biten herhangi bir değişken kullanılabilir duruma getirilir.

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

DscResourcesToExport

Bu ayar, modülün dışarı aktardığını DSC Kaynaklarını belirtir. Modül tarafından dışarı aktarılan sınıf tabanlı DSC Kaynaklarını kısıtlamak için bu ayarı kullanabilirsiniz. Dışarı aktarılan modül üyeleri listesinden DSC Kaynaklarını kaldırabilir, ancak DSC Kaynaklarını listeye ekleyemez.

Değer
Giriş Türü System.String[]
Gerekli Hayır
Ayarlanmamışsa değer $null
Joker karakterleri kabul eder Yes

Bu ayardaki girdileri joker karakterlerle belirtebilirsiniz. Modüldeki tüm eşleşen sınıf tabanlı DSC Kaynakları dışarı aktarılır.

İpucu

Bulunabilirlik için modülünüzün dışarı aktarmış olduğu tüm DSC Kaynaklarını her zaman açıkça listelemeniz gerekir.

DSC Kaynaklarını yazma ve kullanma hakkında daha fazla bilgi için DSC belgelerine bakın.

Bu bildirim, kök modülde ve iç içe yerleştirilmiş modüllerde tanımlanan tüm sınıf tabanlı ve MOF tabanlı DSC Kaynaklarını dışarı aktarır.

@{
    # DscResourcesToExport = @()
}

Bu bildirim, kök modülde ve iç içe yerleştirilmiş modüllerde tanımlanan tüm MOF tabanlı DSC Kaynaklarını dışarı aktarır, ancak yalnızca bir sınıf tabanlı DSC Kaynağı, ExampleClassResource.

@{
    DscResourcesToExport = @(
        'ExampleClassResource'
    )
}

Bu bildirim, içerdiği tüm DSC Kaynaklarını dışarı aktarır. MOF Tabanlı kaynak listelenmemiş olsa bile modül yine de dışarı aktaracaktır.

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

ModuleList

Bu ayar, bu ayarda yer alan modüllerin bilgi envanter listesidir. Bu liste modülün davranışını etkilemez.

Değer
Giriş Türü System.String[], System.Collections.Hashtable[]
Gerekli Hayır
Ayarlanmamışsa değer $null
Joker karakterleri kabul eder Hayır

Bu ayarın girdileri bir modül adı, tam modül belirtimi veya modül ya da betik dosyasının yolu olabilir.

Değer bir yol olduğunda, yol tam veya göreli olabilir.

Değer bir modül adı veya belirtimi olduğunda PowerShell , PSModulePath'de belirtilen modülü arar.

Modül belirtimi, aşağıdaki anahtarlara sahip bir karma tablodur.

  • ModuleName - Gerekli. Modül adını belirtir.
  • GUID - İsteğe bağlı. Modülün GUID değerini belirtir.
  • Ayrıca aşağıdaki üç anahtardan en az birini belirtmek gerekir . Anahtar RequiredVersion veya MaximumVersion tuşlarıyla ModuleVersion kullanılamaz. ve MaximumVersion anahtarlarını birlikte belirterek ModuleVersion modül için kabul edilebilir bir sürüm aralığı tanımlayabilirsiniz.
    • ModuleVersion - Modülün kabul edilebilir en düşük sürümünü belirtir.
    • RequiredVersion - Modülün tam, gerekli bir sürümünü belirtir.
    • MaximumVersion - Modülün kabul edilebilir en yüksek sürümünü belirtir.

Not

RequiredVersion , Windows PowerShell 5.0'a eklendi. MaximumVersion , Windows PowerShell 5.1'e eklendi.

Bu bildirim, içerdiği modüllerin bilgi listesini sağlamaz. Modülleri olabilir veya olmayabilir. Bu ayar belirtilmemiş olsa da RootModule, ScriptsToProcess veya NestedModules ayarlarında listelenen modüller yine de normal şekilde davranır.

@{
    # ModuleList = @()
}

Bu bildirim, içerdiği Example.psm1 tek modüllerin ve alt modüllerin First.psm1 ve Second.psm1 klasöründe olduğunu Submodules bildirir.

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

Dosya Listesi

Bu ayar, bu modülde yer alan dosyaların bilgi envanter listesidir. Bu liste modülün davranışını etkilemez.

Değer
Giriş Türü System.String[]
Gerekli Hayır
Ayarlanmamışsa değer $null
Joker karakterleri kabul eder Yes

Bu ayarın girdileri, modül bildirimini içeren klasörden bir dosyanın göreli yolu olmalıdır.

Kullanıcı bu ayar tanımlı bir bildirime karşı çağrıda Get-Module bulunduğunda , FileList özelliği bu dosyaların tam yolunu içerir ve modülün yolunu her girişin göreli yoluyla birleştirir.

Bu bildirim, dosyalarının listesini içermez.

@{
    # FileList = @()
}

Bu bildirim, içerdiği tek dosyaların bu ayarda listelendiğini bildirir.

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

PrivateData

Bu ayar, kök modülün kapsamındaki tüm komutların veya işlevlerin kullanabileceği bir karma veri tablosu tanımlar.

Değer
Giriş Türü System.Collections.Hashtable
Required PowerShell Galerisi, Crescendo
Ayarlanmamışsa değer $null
Joker karakterleri kabul eder Hayır

Yeni bir modül oluşturmak için bir Crescendo bildirimini dışarı aktardığınızda, Export-CrescendoModule PrivateData'ya iki anahtar ekler

  • CrescendoGenerated - modülün dışarı aktarıldığı zaman damgası
  • CrescendoVersion - Modülü dışarı aktarmak için kullanılan Crescendo sürümü

İzlemek istediğiniz meta verileri tutmak için kendi anahtarlarınızı ekleyebilirsiniz. Bu ayara eklenen tüm anahtarlar, kullanarak $MyInvocation.MyCommand.Module.PrivateDatakök modüldeki işlevler ve cmdlet'ler tarafından kullanılabilir. Karma tablo modül kapsamında kullanılamaz, yalnızca modülde tanımladığınız cmdlet'lerde kullanılabilir.

Örneğin, bu bildirim PrivateData içindeki PublishedDate anahtarını tanımlar.

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

Modüldeki cmdlet'ler bu değere $MyInvocation değişkeniyle erişebilir.

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"
    }
}

Modül içeri aktarıldıktan sonra işlev, modülün ne zaman yayımlandığını belirlemek için PrivateData değerini kullanır.

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 alt özelliği, belirli uzantı senaryolarını destekleyen bir değer karma tablosu tanımlar.

Değer
Giriş Türü System.Collections.Hashtable
Required PowerShell Galerisi, Deneysel özellikler, Crescendo modülleri
Ayarlanmamışsa değer $null
Joker karakterleri kabul eder Hayır

PSData alt özelliği aşağıdaki senaryolar için kullanılır:

  • PowerShell Galerisi - cmdlet'ini kullanarak New-ModuleManifest bir modül bildirimi oluşturduğunuzda PSData karma tablosu, modülü PowerShell Galerisi yayımlarken gereken yer tutucu anahtarlarıyla önceden doldurur. Modül bildirimleri ve PowerShell Galerisi yayımlama hakkında daha fazla bilgi için bkz. PowerShell Galerisi kullanıcı arabirimini etkileyen paket bildirimi değerleri.
  • Deneysel özellikler - Deneysel bir özellik hakkındaki meta veriler PSData'nın ExperimentalFeatures özelliğinde tutulur. ExperimentalFeatures özelliği, özelliğin adını ve açıklamasını içeren bir karma tablo dizisidir. Daha fazla bilgi için bkz . Modüllerde deneysel özellikleri bildirme.
  • Crescendo modülleri - Yeni bir modül oluşturmak için bir Crescendo bildirimini dışarı aktardığınızda, Export-CrescendoModule değeri CrescendoBuilt PSData.Tags özelliğine ekler. Crescendo kullanılarak oluşturulan PowerShell Galerisi modülleri bulmak için bu etiketi kullanabilirsiniz. Daha fazla bilgi için bkz . Export-CrescendoModule.

HelpInfoURI

Bu ayar, modülün HelpInfo XML dosyasının internet adresini belirtir.

Değer
Giriş Türü System.String
Gerekli Hayır
Ayarlanmamışsa değer $null
Joker karakterleri kabul eder Hayır

Bu ayarın değeri, http veya https ile başlayan tekdüzen Kaynak Tanımlayıcısı (URI) olmalıdır.

HelpInfo XML dosyası, PowerShell 3.0'da kullanıma sunulan Güncelleştirilebilir Yardım özelliğini destekler. Modül için indirilebilir yardım dosyalarının konumu ve desteklenen her yerel ayar için en yeni yardım dosyalarının sürüm numaraları hakkında bilgi içerir.

Güncelleştirilebilir Yardım hakkında bilgi için bkz . about_Updatable_Help. HelpInfo XML dosyası hakkında bilgi için bkz . Güncelleştirilebilir Yardımı Destekleme.

Örneğin, bu modül güncelleştirilebilir yardımı destekler.

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

DefaultCommandPrefix

Bu ayar, bir oturuma aktarıldığında modüldeki tüm komutların adlarına eklenen bir ön ek belirtir. Ön ekler, kullanıcının oturumunda komut adı çakışmalarını önlemeye yardımcı olur.

Değer
Giriş Türü System.String
Gerekli Hayır
Ayarlanmamışsa değer $null
Joker karakterleri kabul eder Hayır

Modül kullanıcıları, cmdlet'in Import-Module Prefix parametresini belirterek bu ön eki geçersiz kılabilir.

Bu ayar PowerShell 3.0'da kullanıma sunulmuştur.

Bu bildirim içeri aktarıldığında, bu modülden Example içeri aktarılan tüm cmdlet'ler adına eklenmiştir. Örneğin, Get-Item olarak Get-ExampleItemiçeri aktarılır.

@{
    DefaultCommandPrefix = 'Example'
}

Ayrıca bkz.