Çok uzun projenin seyrinde yazdım Powershell kod büyük miktarda var; Bu betikler çok çeşitli işlevler yerine getirir ve çoğu proje kapsamında başkalarına da bağlıdır. Şu anda, iş, her biri birçok işlev içeren birkaç dosyadan oluşur. Aslında, bu betiklerle çalışmak için tüm betik dosyaları, çevreye gelişigüzel bir şekilde nokta kaynaklıydı.Çoklu dosya Powershell Modülündeki komut dosyaları arasındaki bağımlılıklar nasıl yönetilir?
Ancak, ben PowerShell 2.0 modüllerini tanıttı olduğunu geçenlerde öğrendim ve ben birlikte bu şekilde bu komut dosyalarını dağıtmak istiyoruz. Bir modülün içeriği bir arada yüklendiğinden, kaynak kontrolüne yardımcı olmak için her bir betiğin kendi dosyasına sahip olacak şekilde dosyalarımı ayırmak istiyorum. Ancak, şimdi komut dosyaları arasındaki bağlantılara biraz açık değilim.
Bazı testler yaptık ve buna bireysel .ps1 dosyalara her bir işlev için İhracat-ModuleMember komutu taşımak için sakınca olmadığını görünüyor; Bu, C# 'de kamu ve özel kapsam belirleme gibi kendi kapsamlarını ilan eden işlevlere benziyor. Ancak, bunu yaptıktan sonra .psm1 dosyam bundan başka bir şey içermez:
Get-ChildItem -recurse $psScriptRoot | where { $_.Extension -eq ".ps1" } | foreach { . $_.FullName }
Bu doğru görünüyor mu? Tüm betikler nokta kaynaklı olmakta ve tüm betikler bu varsayım altında birbirlerine atıfta bulunmaktadır. Bunun yerine, kendi konumlarını kullanarak $ psScriptRoot'a göre birbirlerine başvurmaları gerekir mi?
bir yol bu yollardan ikisi farklı var mıdır? Biri tavsiye verebilir mi? Bunlar hakkında henüz bir şey bilmiyorum.
, ancak bunun yerine kendi dosyasındaki her biri komut dosyası içine fonksiyonların gibi grup birkaç:
Burada (MS kaynaklara bağlantılar dahil) buluşlarımla bazı yazdım. – JasonMArcher