Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Kısa açıklama
PowerShell'in hangi komutu çalıştıracaklarını nasıl belirlediğini açıklar.
Uzun açıklama
Komut önceliği, bir oturum aynı ada sahip birden fazla komut içerdiğinde PowerShell'in hangi komutu çalıştıracaklarını nasıl belirleyeceğini açıklar. Oturumdaki komutlar gizlenebilir veya aynı ada sahip komutlarla değiştirilebilir. Bu makalede gizli komutları çalıştırma ve komut adı çakışmalarını önleme hakkında bilgi verilmektedir.
Komut önceliği
PowerShell oturumu aynı ada sahip birden fazla komut içerdiğinde, PowerShell aşağıdaki kuralları kullanarak hangi komutun çalıştırıldığını belirler.
Bir komutun yolunu belirtirseniz, PowerShell komutu yol tarafından belirtilen konumda çalıştırır.
Örneğin, aşağıdaki komut C:\TechDocs dizininde FindDocs.ps1 betiğini çalıştırır:
C:\TechDocs\FindDocs.ps1
Herhangi bir yürütülebilir komutu tam yolunu kullanarak çalıştırabilirsiniz. Güvenlik özelliği olarak, komut $Env:PATH ortam değişkeninde listelenen bir yolda yer almadığı sürece PowerShell, PowerShell betikleri ve yerel komutlar da dahil olmak üzere yürütülebilir komutları çalıştırmaz.
Geçerli dizindeki yürütülebilir bir dosyayı çalıştırmak için tam yolu belirtin veya geçerli dizini temsil etmek için göreli yol .\ kullanın.
Örneğin, geçerli dizinde FindDocs.ps1 dosyasını çalıştırmak için şunu yazın:
.\FindDocs.ps1
Bir yol belirtmezseniz, PowerShell komutları çalıştırırken aşağıdaki öncelik sırasını kullanır.
- Diğer Ad
- Fonksiyon
- Cmdlet (bkz. Cmdlet ad çözümlemesi)
- Dış yürütülebilir dosyalar (PowerShell betik dosyaları dahil)
Bu nedenle, helpyazarsanız, PowerShell önce helpadlı bir diğer adı, ardından helpadlı bir işlevi ve son olarak helpadlı bir cmdlet'i arar. Bulduğu ilk help öğesini çalıştırır.
Örneğin, oturumunuz her ikisi de Get-Mapadlı bir cmdlet ve işlev içeriyorsa, Get-Mapyazdığınızda PowerShell işlevi çalıştırır.
Not
Bu yalnızca yüklenen komutlar için geçerlidir. Geçerli oturuma yüklenmeyen bir modülün içinde build adına sahip bir işlev için build yürütülebilir dosya ve Diğer Ad Invoke-Build varsa, PowerShell bunun yerine build yürütülebilir dosyasını çalıştırır. Dış yürütülebilir dosyayı bulursa modülleri otomatik olarak yüklemez. Yalnızca dış yürütülebilir dosya bulunamadığında verilen ada sahip bir diğer ad, işlev veya cmdlet çağrılır.
Aynı adlara sahip öğeleri çözümleme
Bu kuralların bir sonucu olarak, öğeler aynı ada sahip öğeler tarafından değiştirilebilir veya gizlenebilir.
Öğe adını modül adıyla niteleyerek özgün öğeye hala erişebiliyorsanız öğeler gizli veya gölgeli.
Örneğin, oturumda cmdlet ile aynı ada sahip bir işlevi içeri aktarırsanız, cmdlet gizli ancak değiştirilmez. Modül nitelikli adını belirterek cmdlet'ini çalıştırabilirsiniz.
öğeler değiştirildiğinde veya üzerine, artık özgün öğeye erişemezsiniz.
Örneğin, oturumdaki bir değişkenle aynı ada sahip bir değişkeni içeri aktarırsanız, özgün değişken değiştirilir. Bir değişkeni modül adıyla niteleyemezsiniz.
Komut satırında bir işlev oluşturur ve ardından aynı ada sahip bir işlevi içeri aktarırsanız, özgün işlev değiştirilir.
Gizli komutları bulma
Get-Command cmdlet'in All parametresi, gizli veya değiştirilmiş olsalar bile belirtilen ada sahip tüm komutları alır. PowerShell 3.0'da varsayılan olarak Get-Command yalnızca komut adını yazdığınızda çalıştırılan komutları alır.
Aşağıdaki örneklerde oturum bir Get-Date işlevi ve Get-Date cmdlet'ini içerir. İlk olarak hangi komutun seçileceğini belirlemek için Get-Command kullanabilirsiniz.
Get-Command Get-Date
CommandType Name ModuleName
----------- ---- ----------
Function Get-Date
Kullanılabilir komutlarını listelemek için Tüm Get-Date parametresini kullanır.
Get-Command Get-Date -All
CommandType Name Version Source
----------- ---- ------- ------
Function Get-Date
Cmdlet Get-Date 7.0.0.0 Microsoft.PowerShell.Utility
Get-Command where -All
CommandType Name Version Source
----------- ---- ------- ------
Alias where -> Where-Object
Application where.exe 10.0.22621.1 C:\Windows\system32\where.exe
Komutu aynı ada sahip olabilecek diğer komutlardan ayıran niteleme bilgilerini ekleyerek belirli komutları çalıştırabilirsiniz.
Cmdlet'ler için modül nitelikli adını kullanabilirsiniz. Yürütülebilir dosyalar için dosya uzantısını ekleyebilirsiniz. Örneğin, where yürütülebilir sürümünü çalıştırmak için where.exekullanın.
Modüle uygun adları kullanma
Bir cmdlet'in modül nitelikli adını kullanmak, aynı ada sahip bir öğe tarafından gizlenen komutları çalıştırmanıza olanak tanır. Örneğin, Get-Date cmdlet'ini Microsoft.PowerShell.Utility veya yolu modül adıyla niteleyerek çalıştırabilirsiniz. Modüle uygun adları kullandığınızda, modül $PSModuleAutoLoadingPreferencedeğerine bağlı olarak otomatik olarak oturuma aktarılabilir.
Not
Değişkenleri veya diğer adları nitelemek için modül adlarını kullanamazsınız.
Modül nitelikli adları kullanmak, çalıştırmak istediğiniz komutu çalıştırmanızı sağlar. Bu, dağıtmak istediğiniz betikleri yazarken cmdlet'leri çağırmak için önerilen yöntemdir.
Aşağıdaki örnek, modül adını ekleyerek bir komutun nasıl niteleme yapılacağını gösterir.
Önemli
Modül niteliği, platformdan bağımsız olarak modül adını komut adından ayırmak için ters eğik çizgi karakterini (\) kullanır.
New-Alias -Name "Get-Date" -Value "Get-ChildItem"
Microsoft.PowerShell.Utility\Get-Date
Tuesday, May 16, 2023 1:32:51 PM
New-Map modülünden bir MapFunctions komutu çalıştırmak için modüle uygun adını kullanın:
MapFunctions\New-Map
Bir komutun içeri aktarıldığı modülü bulmak için komutların ModuleName özelliğini kullanın.
(Get-Command <command-name>).ModuleName
Örneğin, Get-Date cmdlet'in kaynağını bulmak için şunu yazın:
(Get-Command Get-Date).ModuleName
Microsoft.PowerShell.Utility
Modülün yolunu kullanarak komutun adını nitemek istiyorsanız, yol ayırıcısı olarak eğik çizgi (/) ve komut adından önce ters eğik çizgi karakterini (\) kullanmanız gerekir.
Get-Date cmdlet'ini çalıştırmak için aşağıdaki örneği kullanın:
//localhost/c$/Progra~1/PowerShell/7-preview/Modules/Microsoft.PowerShell.Utility\Get-Date
Yol, tam bir yol veya geçerli konuma göre bir yol olabilir.
Windows'ta, sürücüye uygun bir yol kullanamazsınız. Önceki örnekte gösterildiği gibi bir UNC yolu veya geçerli sürücüye göre bir yol kullanmanız gerekir.
Aşağıdaki örnekte, geçerli konumunuzun C: sürücüsünde olduğu varsayılır.
/Progra~1/PowerShell/7-preview/Modules/Microsoft.PowerShell.Utility\Get-Date
Çağrı işlecini kullanma
Ayrıca, get-childitem &çağrısıyla birleştirerek gizli komutları çalıştırmak için çağrı işlecini (dir) kullanabilirsiniz.
Çağrı işleci bir alt kapsamda dizeleri ve betik bloklarını yürütür. Daha fazla bilgi için bkz. about_Operators.
Örneğin, Mapadlı diğer ad tarafından gizlenen Map adlı işlevi çalıştırmak için aşağıdaki komutu kullanın.
& (Get-Command -Name Map -CommandType Function)
veya
& (dir Function:\map)
Ayrıca, çalıştırılmasını kolaylaştırmak için gizli komutunuzu bir değişkene kaydedebilirsiniz.
Örneğin, aşağıdaki komut Map işlevini $myMap değişkenine kaydeder ve ardından çalıştırmak için Call işlecini kullanır.
$myMap = (Get-Command -Name map -CommandType Function)
& ($myMap)
Değiştirilen öğeler
Değiştirilen öğesi, artık erişilemeyecek öğedir. Bir modülden aynı ada sahip öğeleri içeri aktararak öğeleri değiştirebilirsiniz.
Örneğin, oturumunuza bir Get-Map işlevi yazarsanız ve Get-Mapadlı bir işlevi içeri aktarırsanız, özgün işlevin yerini alır. Geçerli oturumda alamazsınız.
Değişkenleri ve diğer adları çalıştırmak için bir çağrı işleci veya nitelenmiş ad kullanamadığınız için gizlenemez. Modüldeki değişkenleri ve diğer adları içeri aktardığınızda, bunlar oturumdaki değişkenleri aynı adla değiştirir.
Cmdlet ad çözümlemesi
Bir cmdlet'in tam adını kullanmadığınızda PowerShell, cmdlet'in geçerli oturumda yüklenip yüklenmediğini denetler. Aynı cmdlet adını içeren birden çok modül yüklüyse, PowerShell alfabetik olarak bulunan ilk modüldeki cmdlet'i kullanır.
Cmdlet yüklenmezse PowerShell yüklü modülleri arar ve cmdlet'ini içeren ilk modülü otomatik olarak yükler ve bu cmdlet'i çalıştırır.
PowerShell, $Env:PSModulePath ortam değişkeninde tanımlanan her bir yoldaki modülleri arar. Yollar, değişkende listelendikleri sırayla aranırlar. Her yol içinde modüller alfabetik sırada aranıyor. PowerShell bulduğu ilk eşleşmeden cmdlet'ini kullanır.
Ad çakışmalarını önleme
Komut adı çakışmalarını yönetmenin en iyi yolu bunları önlemektir. Komutlarınızı adlandırırken benzersiz bir ad kullanın. Örneğin, komutlarınızdaki adlara adınızın baş harflerini veya şirket adı kısaltmanızı ekleyin.
Komutları bir PowerShell modülünden veya başka bir oturumdan oturumunuza aktardığınızda, komutların adlarındaki adlara ön ek eklemek için Prefix parametresini veya Import-PSSession cmdlet'ini kullanabilirsiniz.
Örneğin, aşağıdaki komut, Get-Date modülünü içeri aktardığınızda PowerShell ile birlikte gelen Set-Date ve DateFunctions cmdlet'leriyle çakışmayı önler.
Import-Module -Name DateFunctions -Prefix ZZ
Dış yürütülebilir dosyaları çalıştırma
Windows'da. PowerShell, $Env:PATHEXT ortam değişkeninde listelenen dosya uzantılarını yürütülebilir dosyalar olarak değerlendirir. Windows yürütülebilir dosyası olmayan dosyalar işlenmek üzere Windows'a teslim edilir. Windows dosya ilişkilendirmesini arar ve uzantı için varsayılan Windows Kabuğu fiilini yürütür. Windows'un dosya uzantısıyla yürütmeyi desteklemesi için ilişkilendirmenin sisteme kaydedilmesi gerekir.
CMD komut kabuğunun ftype ve assoc komutlarını kullanarak dosya uzantısı için yürütülebilir altyapıyı kaydedebilirsiniz. PowerShell'in dosya işleyicisini kaydetmek için doğrudan bir yöntemi yoktur. Daha fazla bilgi için ftype komutunun belgelerine bakın.
PowerShell'in geçerli oturumda dosya uzantısını yürütülebilir olarak görmesi için uzantıyı $Env:PATHEXT ortam değişkenine eklemeniz gerekir.
Ayrıca bakınız
- about_Aliases
- about_Functions
- about_Path_Syntax
- Diğer Ad Sağlayıcısı
- İşlev Sağlayıcısı
- Get-Command
- İçeri Aktarma Modülü
- import-PSSession
PowerShell