Aracılığıyla paylaş


PowerShell Modülü Yükleme

PowerShell modülünüzü oluşturduktan sonra, sizin veya başkalarının kullanabilmesi için modülü bir sisteme yüklemek isteyebilirsiniz. Genel olarak bakıldığında, bu modül dosyalarının (örneğin, .psm1veya ikili derleme, modül bildirimi ve diğer ilişkili dosyalar) bu bilgisayardaki bir dizine kopyalanmasından oluşur. Çok küçük bir proje için bu, Windows Gezgini ile dosyaları tek bir uzak bilgisayara kopyalayıp yapıştırmak kadar basit olabilir; ancak, daha büyük çözümler için daha karmaşık bir yükleme işlemi kullanmak isteyebilirsiniz. Modülünüzü sisteme nasıl aldığınızdan bağımsız olarak PowerShell, kullanıcıların modüllerinizi bulmasına ve kullanmasına olanak sağlayan bir dizi teknik kullanabilir. Bu nedenle, yüklemenin temel sorunu PowerShell'in modülünüzü bulabilmesini sağlamaktır. Daha fazla bilgi için bkz . PowerShell Modülünü İçeri Aktarma.

Modülleri Yükleme Kuralları

Aşağıdaki bilgiler, kendi kullanımınız için oluşturduğunuz modüller, diğer taraflardan edindiğiniz modüller ve başkalarına dağıttığınız modüller dahil olmak üzere tüm modüllerle ilgili olabilir.

PSModulePath'te Modülleri Yükleme

Mümkün olduğunda, tüm modülleri PSModulePath ortam değişkeninde listelenen bir yola yükleyin veya modül yolunu PSModulePath ortam değişkeni değerine ekleyin.

PSModulePath ortam değişkeni ($Env:PSModulePath) Windows PowerShell modüllerinin konumlarını içerir. Cmdlet'ler modülleri bulmak için bu ortam değişkeninin değerine güvenir.

Varsayılan olarak, PSModulePath ortam değişkeni değeri aşağıdaki sistem ve kullanıcı modülü dizinlerini içerir, ancak değeri ekleyebilir ve düzenleyebilirsiniz.

  • $PSHOME\Modules (%windir%\System32\WindowsPowerShell\v1.0\Modules)

    Uyarı

    Bu konum, Windows ile birlikte gelen modüller için ayrılmıştır. Modülleri bu konuma yüklemeyin.

  • $HOME\Documents\WindowsPowerShell\Modules (%HOMEDRIVE%%HOMEPATH%\Documents\WindowsPowerShell\Modules)

  • $Env:ProgramFiles\WindowsPowerShell\Modules (%ProgramFiles%\WindowsPowerShell\Modules)

    PSModulePath ortam değişkeninin değerini almak için aşağıdaki komutlardan birini kullanın.

    $Env:PSModulePath
    [Environment]::GetEnvironmentVariable("PSModulePath")
    

    PSModulePath ortam değişkeni değerinin değerine modül yolu eklemek için aşağıdaki komut biçimini kullanın. Bu biçim, System.Environment sınıfının SetEnvironmentVariable yöntemini kullanarak PSModulePath ortam değişkeninde oturumdan bağımsız bir değişiklik yapar.

    #Save the current value in the $p variable.
    $p = [Environment]::GetEnvironmentVariable("PSModulePath")
    
    #Add the new path to the $p variable. Begin with a semi-colon separator.
    $p += ";C:\Program Files (x86)\MyCompany\Modules\"
    
    #Add the paths in $p to the PSModulePath value.
    [Environment]::SetEnvironmentVariable("PSModulePath",$p)
    

    Önemli

    PSModulePathyolunu ekledikten sonra, değişiklikle ilgili bir ortam iletisi yayınlamanız gerekir. Değişikliği yayınlamak, kabuk gibi diğer uygulamaların değişikliği almasını sağlar. Değişikliği yayınlamak için, ürün yükleme kodunuzun lParam "Ortam" dizesine ayarlanmış bir WM_SETTINGCHANGE iletisi göndermesini sağlayın. Modül yükleme kodunuz PSModulePath güncelleştirdikten sonra iletiyi gönderdiğinizden emin olun.

Doğru Modül Dizin Adını Kullanma

İyi biçimlendirilmiş modül, modül dizinindeki en az bir dosyanın temel adıyla aynı ada sahip bir dizinde depolanan bir modüldür. Bir modül iyi biçimlendirilmemişse, Windows PowerShell modül olarak tanımaz.

Bir dosyanın "temel adı", dosya adı uzantısı olmayan addır. İyi biçimlendirilmiş bir modülde, modül dosyalarını içeren dizinin adı modüldeki en az bir dosyanın temel adıyla eşleşmelidir.

Örneğin, örnek Fabrikam modülünde, modül dosyalarını içeren dizin "Fabrikam" olarak adlandırılır ve en az bir dosya "Fabrikam" temel adına sahiptir. Bu durumda hem Fabrikam.psd1 hem de Fabrikam.dll "Fabrikam" temel adına sahiptir.

C:\Program Files
  Fabrikam Technologies
    Fabrikam Manager
      Modules
        Fabrikam
          Fabrikam.psd1 (module manifest)
          Fabrikam.dll (module assembly)

Yanlış Yüklemenin Etkisi

Modül düzgün biçimlendirilmemişse ve konumu PSModulePath ortam değişkeninin değerine dahil değilse, Windows PowerShell'in aşağıdaki gibi temel bulma özellikleri çalışmaz.

  • Modül Otomatik Yükleme özelliği modülü otomatik olarak içeri aktaramaz.

  • Get-Module cmdlet'in ListAvailable parametresi modülü bulamıyor.

  • Import-Module cmdlet'i modülü bulamıyor. Modülü içeri aktarmak için kök modül dosyasının veya modül bildirim dosyasının tam yolunu sağlamanız gerekir.

    Aşağıdaki gibi ek özellikler, modül oturuma aktarılmadığı sürece çalışmaz. PSModulePath ortam değişkenindeki iyi biçimlendirilmiş modüllerde, modül oturuma aktarılmadığında bile bu özellikler çalışır.

  • Get-Command cmdlet'i modüldeki komutları bulamıyor.

  • Update-Help ve Save-Help cmdlet'leri modül için yardımı güncelleştiremez veya kaydedemez.

  • Show-Command cmdlet'i modüldeki komutları bulamıyor ve görüntüleyemez.

    Modüldeki komutlar Windows PowerShell Tümleşik Betik Ortamı'ndaki (ISE) Show-Command penceresinde yok.

Modüllerin Yükleneceği Yer

Bu bölümde, dosya sisteminde Windows PowerShell modüllerinin nereye yükleneceği açıklanmaktadır. Konum, modülün nasıl kullanıldığına bağlıdır.

Belirli Bir Kullanıcı için Modülleri Yükleme

Kendi modülünüzü oluşturursanız veya Windows PowerShell topluluk web sitesi gibi başka bir taraftan bir modül alırsanız ve modülün yalnızca kullanıcı hesabınız için kullanılabilir olmasını istiyorsanız, modülü kullanıcıya özgü Modüller dizininize yükleyin.

$HOME\Documents\WindowsPowerShell\Modules\<Module Folder>\<Module Files>

Kullanıcıya özgü Modules dizini varsayılan olarak PSModulePath ortam değişkeninin değerine eklenir.

Program Dosyalarındaki Tüm Kullanıcılar için Modülleri Yükleme

Bir modülün bilgisayardaki tüm kullanıcı hesaplarının kullanımına sunulmasını istiyorsanız, modülü Program Dosyaları konumuna yükleyin.

$Env:ProgramFiles\WindowsPowerShell\Modules\<Module Folder>\<Module Files>

Uyarı

Program Files konumu, Windows PowerShell 4.0 ve sonraki sürümlerde varsayılan olarak PSModulePath ortam değişkeninin değerine eklenir. Windows PowerShell'in önceki sürümleri için Program Files konumunu (%ProgramFiles%\WindowsPowerShell\Modules) el ile oluşturabilir ve bu yolu yukarıda açıklandığı gibi PSModulePath ortam değişkeninize ekleyebilirsiniz.

Bir Ürün Dizinine Modül Yükleme

Modülü diğer taraflara dağıtıyorsanız, yukarıda açıklanan varsayılan Program Dosyaları konumunu kullanın veya %ProgramFiles% dizininin şirkete veya ürüne özgü alt dizinini oluşturun.

Örneğin, kurgusal bir şirket olan Fabrikam Technologies, Fabrikam Manager ürünü için bir Windows PowerShell modülü gönderiyor. Modül yükleyicisi, Fabrikam Manager ürün alt dizininde bir Modules alt dizini oluşturur.

C:\Program Files
  Fabrikam Technologies
    Fabrikam Manager
      Modules
        Fabrikam
          Fabrikam.psd1 (module manifest)
          Fabrikam.dll (module assembly)

Fabrikam modülünü bulmak için Windows PowerShell modülü bulma özelliklerini etkinleştirmek için, Fabrikam modül yükleyicisi modül konumunu PSModulePath ortam değişkeninin değerine ekler.

$p = [Environment]::GetEnvironmentVariable("PSModulePath")
$p += ";C:\Program Files\Fabrikam Technologies\Fabrikam Manager\Modules\"
[Environment]::SetEnvironmentVariable("PSModulePath",$p)

Common Files Dizinine Modül Yükleme

Bir modül bir ürünün birden çok bileşeni veya ürünün birden çok sürümü tarafından kullanılıyorsa, modülü %ProgramFiles%\Common Files\Modules alt dizininin modüle özgü alt dizinine yükleyin.

Aşağıdaki örnekte Fabrikam modülü, %ProgramFiles%\Common Files\Modules alt dizininin Fabrikam alt dizinine yüklenir. Her modülün Modüller alt dizininde kendi alt dizininde bulunduğunu unutmayın.

C:\Program Files
  Common Files
    Modules
      Fabrikam
        Fabrikam.psd1 (module manifest)
        Fabrikam.dll (module assembly)

Ardından yükleyici, PSModulePath ortam değişkeninin değerinin Common Files\Modules alt dizininin yolunu içerdiğini garanti eder.

$m = $Env:ProgramFiles + '\Common Files\Modules'
$p = [Environment]::GetEnvironmentVariable("PSModulePath")
$q = $p -split ';'
if ($q -notcontains $m) {
    $q += ";$m"
}
$p = $q -join ';'
[Environment]::SetEnvironmentVariable("PSModulePath", $p)

Modülün Birden Çok Sürümünü Yükleme

Aynı modülün birden çok sürümünü yüklemek için aşağıdaki yordamı kullanın.

  1. Modülün her sürümü için bir dizin oluşturun. Dizin adına sürüm numarasını ekleyin.
  2. Modülün her sürümü için bir modül bildirimi oluşturun. Bildirimdeki ModuleVersion anahtarının değerine modül sürüm numarasını girin. Bildirim dosyasını (.psd1) modülün sürüme özgü dizinine kaydedin.
  3. Modül kök klasör yolunu, aşağıdaki örneklerde gösterildiği gibi PSModulePath ortam değişkeninin değerine ekleyin.

Modülün belirli bir sürümünü içeri aktarmak için son kullanıcı, Import-Module cmdlet'in MinimumVersion veya RequiredVersion parametrelerini kullanabilir.

Örneğin, Fabrikam modülü 8.0 ve 9.0 sürümlerinde kullanılabiliyorsa, Fabrikam modülü dizin yapısı aşağıdakine benzer olabilir.

C:\Program Files
Fabrikam Manager
 Fabrikam8
   Fabrikam
     Fabrikam.psd1 (module manifest: ModuleVersion = "8.0")
     Fabrikam.dll (module assembly)
 Fabrikam9
   Fabrikam
     Fabrikam.psd1 (module manifest: ModuleVersion = "9.0")
     Fabrikam.dll (module assembly)

Yükleyici, modül yollarının ikisini de PSModulePath ortam değişkeni değerine ekler.

$p = [Environment]::GetEnvironmentVariable("PSModulePath")
$p += ";C:\Program Files\Fabrikam\Fabrikam8;C:\Program Files\Fabrikam\Fabrikam9"
[Environment]::SetEnvironmentVariable("PSModulePath",$p)

Bu adımlar tamamlandığında, Get-Module cmdlet'in ListAvailable parametresi Fabrikam modüllerinin her ikisini de alır. Belirli bir modülü içeri aktarmak için Import-Module cmdlet'in MinimumVersion veya RequiredVersion parametrelerini kullanın.

Her iki modül de aynı oturuma aktarılırsa ve modüller aynı adlara sahip cmdlet'ler içeriyorsa, en son içeri aktarılan cmdlet'ler oturumda etkilidir.

Komut Adı Çakışmalarını İşleme

Bir modülün dışarı aktarmış olduğu komutlar kullanıcının oturumundaki komutlarla aynı ada sahip olduğunda komut adı çakışmaları oluşabilir.

Oturum aynı ada sahip iki komut içerdiğinde, Windows PowerShell öncelik alan komut türünü çalıştırır. Bir oturum aynı ada ve aynı türe sahip iki komut içerdiğinde, Windows PowerShell en son oturuma eklenen komutu çalıştırır. Varsayılan olarak çalıştırılmayan bir komutu çalıştırmak için, kullanıcılar komut adını modül adıyla niteleyebilir.

Örneğin, oturum bir Get-Date işlevi ve Get-Date cmdlet'i içeriyorsa, Windows PowerShell işlevi varsayılan olarak çalıştırır. cmdlet'ini çalıştırmak için komutun başına modül adını yazın, örneğin:

Microsoft.PowerShell.Utility\Get-Date

Ad çakışmalarını önlemek için modül yazarları modül bildirimindeki DefaultCommandPrefix anahtarını kullanarak modülden dışarı aktarılan tüm komutlar için bir isim ön eki belirtebilir.

Kullanıcılar, alternatif bir ön ek kullanmak için Import-Module cmdlet'in Öneki parametresini kullanabilir. Prefix parametresinin değeri, DefaultCommandPrefix anahtarının değerinden önceliklidir.

Windows olmayan sistemlerde destekleyici yollar

Windows dışı platformlar, yol ayırıcı olarak iki nokta üst üste (:) karakterini ve dizin ayırıcısı olarak eğik çizgi (/) karakterini kullanır. [System.IO.Path] sınıfı, kodunuzun herhangi bir platformda çalışmasını sağlamak için kullanılabilecek statik üyelere sahiptir:

  • [System.IO.Path]::PathSeparator - konak platformu için PATH ortam değişkenindeki yolları ayırmak için kullanılan karakteri döndürür
  • [System.IO.Path]::DirectorySeparatorChar - dizin adlarını konak platformu için bir yol ile ayırmak için kullanılan karakteri döndürür

Yol dizeleri oluştururken ; ve \ karakterleri yerine bu statik özellikleri kullanın.

Ayrıca Bkz.

Komut Önceliği Hakkında

Windows PowerShell Modülü yazma