PowerShell Bölünmüş Yol Cmdlet'iyle Yolları Bölme
Belirli kısımlarını elde etmek için yolları ayırmanız mı gerekiyor? Öyleyse PowerShell Split-Path güvenebileceğiniz arkadaşınızdır. Dosyalar, sertifikalar ve kayıt defteriyle çalışırken yolların bunların konumlarını temsil ettiğini fark edeceksiniz.
Ve bir noktada, belki otomasyon yaparken, yolun hangi bölümüne geri döneceğinizi filtrelemeniz gerekebilir. Şanslısınız ki, bu eğitim size bunu yapmak için PowerShell Split-Path cmdlet'ini kullanmanın yollarını öğretecek.
Hadi! Okumaya devam edin ve size PowerShell cephaneliğiniz için yeni bir silah verelim!
Önkoşullar
Bu uygulamalı eğitimdeki örnekleri takip etmeyi planlıyorsanız, PowerShell 5.1 veya daha yüksek bir sürüme sahip herhangi bir modern Windows sürümünü çalıştıran bir bilgisayara ihtiyacınız olacaktır. Bu eğitimde PowerShell 7.1.1 ile Windows 10 20H2 kullanılacaktır.
Bir Yolda Ne Var?
PowerShell Split-Path cmdlet'ini derinlemesine incelemeden önce yolun ne olduğu konusunda net olduğunuzdan emin olalım. Yol, belirli bir formatı izleyen bir öğenin konumunu belirler.
Örneğin, bir dosyanın yolu C:\demo\subfolder1\TestFile_11.txt olabilir. Bu yolu parçalara ayırırsanız yol aşağıdakileri içerir:
- C: sürücü veya niteleyici veya belirtilen yoldur. niteleyici, yolun soldan iki nokta üst üste (
:) karakterine kadar olan kısmıdır. - \demo\subfolder1\ klasör ve alt klasör(ler) veya kapsayıcılardır.
- TestFile_11.txt dosya adı veya yapraktır. Yaprak bir yolun son öğesi veya parçasıdır.
Ancak yolların dosya ve klasörlere özel olmadığını unutmayın. Diğer geçerli yollar şunları içerebilir:
- Sertifika (ör. Sertifika:\MevcutKullanıcı\Benim)
- Kayıt defteri (ör. HKCU:\Software)
- İşlev (ör. İşlev:\Yeni Kılavuz)
- Değişken (ör. Değişken:\PSEdition)
- Active Directory (ör. AD:\CN=Users,DC=Constoso,DC=com)
PowerShell Bölünmüş Yol Parametreleri
Herhangi bir cmdlet gibi, Split-Path de cmdlet'in nasıl davranacağını belirleyen ve çıktısını döndüren bir dizi parametreyle birlikte gelir. Ve bu parametreler PowerShell Bölünmüş Yol sözdizimini oluşturan şeylerdir.
-Path- Bu parametre, bölmek istediğiniz bir veya daha fazla yol dizesini kabul eder. Bu parametre aynı zamanda boru hattı girişini de kabul eder. Yollardaki joker karakterler de kabul edilebilir.-LiteralPath--Pathparametresi gibi,-LiteralPathparametresi de bölünecek yolları kabul eder. Ancak bu parametre yolu yalnızca yazıldığı gibi ele alacaktır. Yani, yolları belirtmek için bu parametreyi kullanırsanız komut joker karakterleri yorumlamayacaktır.-Resolve- Bu parametreSplit-Pathcmdlet'ine sağladığınız yolun referans verdiği dosyaları veya öğeleri çözümlemesini söyler. Gerçek doğası nedeniyle bu parametreyi-LiteralPathparametresiyle birlikte kullanamazsınız.-IsAbsolute- Bu parametre, belirttiğiniz yolun mutlak bir yol olup olmadığını belirlemek için bir boole değeri döndürür.
PowerShell
Split-Pathcmdlet'i ayrıca bir kimlik bilgisi PSCredential nesnesini kabul ettiği varsayılan-Credentialadında bir parametreye sahiptir. Ancak Microsoft'a göre bu parametre, kullanıma hazır PowerShell sağlayıcılarının hiçbiri tarafından desteklenmiyor ve onu kullandığınızda hata veriyor.
Aşağıdaki parametrelere Bölünmüş Konum Parametreleri adı verilir. Bu parametreler, PowerShell Split-Path cmdlet'ine yolun hangi öğesinin veya bölümünün döndürüleceğini söyler. Cmdlet bir yolun yalnızca bir öğesini döndürebildiğinden, aynı anda bu parametrelerden yalnızca birini kullanabilirsiniz.
-Parent- Belirttiğiniz yolun üst konumunu (öğe veya dosya adı olmadan) döndürür. Bu parametre aynı zamanda varsayılan bölünmüş konum parametresidir; bu, bu parametreyi atlayıp sonuç olarak ana konumu almaya devam edebileceğiniz anlamına gelir.-Leaf- Yolun veya yaprağın yalnızca son öğesini döndürür.-LeafBase- Yolun yalnızca son öğesini veya uzantısı olmayan yaprağı döndürür. Bu parametre yalnızca PowerShell 6,0 ve üzeri sürümlerde mevcuttur.-Uzantı-Yalnızca yaprağın uzantısını döndürür (son nokta olan “.”dan yolun son karakterine kadar). Bu parametre yalnızca PowerShell 6,0 ve üzeri sürümlerde mevcuttur.-Niteleyici- Yalnızca yolun sürücüsünü veya niteleyicisini döndürür.-NoQualifier- Sürücüyü veya niteleyiciyi yolun geri kalanından kaldırır.
PowerShell Bölünmüş Yol Cmdlet'ini Kullanma (Örnekler)
PowerShell Bölünmüş Yol cmdlet'i bir yolun bölümlerini bölmenize ve parçalara ayırmanıza olanak tanır. Bunu yaptıktan sonra yolun hangi kısmına dönüleceğini belirleyebilirsiniz. Çıktı gereksiniminize bağlı olarak niteleyiciyi, niteleyicisiz yolu ve dosya adlarını döndürmeyi seçebilirsiniz.
Bir Yolun Ana Klasörünü Alma
Yolun üst klasörünü döndürmek için PowerShell Split-Path cmdlet'ini çalıştırın ve -Parent parametresini ekleyin.
Split-Path -Path C:\demo\subfolder1\TestFile_11.txt -ParentAşağıdaki sonuç, komutun ana klasörün yolunu döndürdüğünü gösterir.
İpucu: PowerShell Bölünmüş Yol cmdlet'ini parametreler olmadan çalıştırmak, varsayılan olarak üst klasörü döndürecektir; bu,
-Parentparametresinin kullanılmasıyla aynı davranıştır.
İpucu:
-Pathparametresi birden çok yolu kabul eder; bu, tek bir komutta birden çok yol dizesi değerini bölmenize olanak tanır.ör.,
Bölünmüş Yol -Yol 'c:\klasör1','c:\klasör2'
Niteleyici Olmadan Bir Yolu Görüntüleme
Bir klasör ağacı yapısını bir sürücüden diğerine kopyalayan bir komut dosyası oluşturduğunuzu düşünün (örneğin, C:\demo\subfolder1 - D:\demo\subfolder1) . Kodunuzun kaynak yolunu bölmesini ve klasör yapısını yalnızca sürücü harfi olmadan almasını isteyebilirsiniz.
Niteleyici olmadan yolu elde etmek için PowerShell Split-Path cmdlet'ini aşağıdaki komut gibi -NoQualifier parametresiyle çalıştırın. Bu komut, sonuçta sürücü harfini atlayarak yolu böler.
Split-Path -Path C:\demo\subfolder1 -NoQualifierAşağıdaki sonuçtan da görebileceğiniz gibi, noQualifier parametresinin kullanılması, niteleyici dize olmadan yolu döndürür.
Bir Yolun Sürücüsünü veya Niteleyicisini Alma
Yalnızca niteleyiciyi veya sürücü harfini döndürmeniz gereken zamanlar olabilir. Örneğin, komut dosyanızın sonuçları sürücü harflerine göre özetlemesini istediğinizde.
Bunu yapmak için aşağıdaki PowerShell Split-Path komutunu -Qualifier parametresiyle çalıştırın. Bu komut yolu bölecek ve sonuç olarak yalnızca niteleyici dizeyi döndürecektir.
Split-Path -Path C:\demo\subfolder1\TestFile_11.txt -QualifierBir Dosyanın, Dizinin veya Öğenin Adını Görüntüleme
Yolu bir ağaç gibi düşünün. Niteleyici ağacın kendisi olabilir, klasörler dallardır ve sonunda yaprağı bulacaksınız. Yaprak, yolun sonundaki sıfır uzunlukta olmayan herhangi bir dizedir.
Yaprağı elde etmek için bir yolu bölmeniz gerektiğinde, aşağıdaki Bölünmüş Yol komutunu çalıştırın ve -Leaf parametresini ekleyin.
Split-Path -Path C:\demo\subfolder1\TestFile_11.txt -LeafSonuç olarak aşağıdaki görüntü, komutun yalnızca belirttiğiniz yoldan dosya adını döndürdüğünü göstermektedir.
Dosya Adı ve Uzantıyı Bölme (≥PowerShell 6.0)
Not: Bu bölüm PowerShell 6.0 ve üzeri için geçerlidir.
Yani yolu böldünüz ve öğeyi geri verdiniz. Ve bu durumda öğe, iki bölümden (temel ve uzantı) oluşan bir dosya adıdır (TestFile_11.txt). PowerShell Split-Path cmdlet'i, -LeafBase ve -Extension parametresiyle yaprağı bu iki parçaya daha fazla bölmenize olanak tanır.
Bir dosya adının tabanını ve uzantısını almak için aşağıdaki komutları çalıştırın.
Yolun bir uzantısı yoksa
Uzantıparametresi boş bir dize döndürür.
Split-Path -Path C:\demo\subfolder1\TestFile_11.txt -LeafBase
Split-Path -Path C:\demo\subfolder1\TestFile_11.txt -ExtensionDosya Adı ve Uzantıyı Bölme (≤ Windows PowerShell 5.1)
Maalesef -LeafBase ve -Extension parametreleri Windows PowerShell 5,1 ve daha düşük sürümlerde mevcut değildir. Ancak endişelenmeyin, biraz PowerShell büyüsüyle, yalnızca Windows PowerShell 5.1'e sahip olsanız bile bu parametrelerin çıktısını çoğaltabilirsiniz.
Ancak Split-Path cmdlet'i yerine bir sonraki en iyi şeyi kullanacaksınız: split() yöntemi ve -replace kombinasyonu Şebeke.
Yol gibi bir PowerShell dize nesnesi bir split() yöntemi içerir. Bu yöntem, sağladığınız sınırlayıcı karaktere göre bir dizeyi birden çok öğeye bölmenize olanak tanır. Yollar söz konusu olduğunda sınırlayıcı (\\) ters eğik çizgi karakteridir.
Öte yandan, -replace operatörü, normal ifadeleri (RegEx) kullanarak dizeleri değiştirmenize olanak tanır.
-LeafBase parametre sonuçlarını taklit etmek için PowerShell'de aşağıdaki komutu çalıştırın.
# Split the path ('C:\demo\subfolder1\TestFile_11.txt') using '\' as the delimiter.
# Select the last '[-1]' element after the split (TestFile_11.txt)
# Search the string that matches this pattern --> '\.[^.]*$'
# ^ this pattern will match the last dot "." in the path AND every other character after it.
# Then replace the match with nothing/empty value ''.
('C:\demo\subfolder1\TestFile_11.txt').split('\')[-1] -replace '\.[^.]*$',''Sonuç olarak aşağıdaki ekran görüntüsü, komutun yalnızca dosya adının temel adını döndürdüğünü göstermektedir.
Şimdi yalnızca dosya uzantısını almak için PowerShell'de aşağıdaki komutu çalıştırın.
# Split the path ('C:\demo\subfolder1\TestFile_11.txt') using '.' as the delimiter.
# Select the last '[-1]' element after the split (txt)
('C:\demo\subfolder1\TestFile_11.txt').split('.')[-1]Aşağıdaki sonuç, komutun yalnızca dosya adı uzantısını (txt) döndürdüğünü gösterir.
Yolun Mutlak Olup Olmadığını Belirlemek
Bir sistem yöneticisi olarak iki yol türüyle karşılaşacaksınız: mutlak ve göreli. Ama fark nedir? Mutlak yol, C:\demo veya HKCU:\Software gibi bir niteleyiciyle başlar. Bunun tersine, göreceli yolun .\demo veya \folder1\folder2 gibi bir niteleyicisi yoktur.
PowerShell Split-Path cmdlet'i, -IsAbsolute parametresini kullanarak mutlak bir yol tanımlamanıza yardımcı olabilir. Bunu yapmak için yolun mutlak olup olmadığını belirlemek üzere aşağıdaki komutları çalıştırın.
# This path is absolute
Split-Path -Path C:\demo\subfolder1\TestFile_11.txt -IsAbsolute
# This path is relative
Split-Path -Path .\demo\subfolder1\TestFile_11.txt -IsAbsolute
Aşağıda görebileceğiniz gibi -isAbsolute parametresi, yolun mutlak mı (TRUE) yoksa göreceli mi (FALSE) olduğunu belirtmek için bir boole değeri döndürür. .
Yolları Joker Karakterlerle Bölme ve Çözümleme
Bu noktaya kadar Split-Path cmdlet'iyle böldüğünüz yolların mevcut yollar olması gerekmez. Bir yol olsun ya da olmasın, bu cmdlet onu bölecek ve size sonucu verecektir.
Ancak PowerShell Split-Path cmdlet'inin -Resolve adında başka bir parametresi vardır. Bu parametre, joker karakterlerle başvurulan öğeleri çözümlemenize olanak tanır. Ve bu parametreyi kullanacaksanız böleceğiniz yolun ve içindeki öğelerin zaten mevcut olması gerekir.
Örneğin, *.txt dosya uzantısıyla eşleşen öğeleri döndürmek için aşağıdaki komutu çalıştırın. -Leaf parametresi, cmdlet'in üst kapsayıcıları değil yalnızca öğeleri döndürmesini sağlar.
(
*) joker karakteri eşleşecek bir veya daha fazla karakteri temsil ederken, (?) tek karakterlik bir joker karakteri temsil eder.
Split-Path -Path C:\demo\subfolder1\*.txt -Leaf -ResolveAşağıdaki sonuç, TestFile_11.txt ile TestFile_20.txt arasındaki dosyaları listeler. Bu dosyaların tümü .txt dosya adı uzantısıyla eşleşiyordu.
Bunun yerine tek karakter eşleşmesini çözmek için, aşağıdaki komutta olduğu gibi yıldız işareti (*) joker karakterini (?) joker karakteriyle değiştirin.
Split-Path -Path C:\demo\subfolder1\TestFile_2?.txt -Resolve -LeafAşağıdaki çıktı yalnızca TestFile_20.txt dosyasını gösterir çünkü eşleşen tek dosya bu dosyadır.
Yol, ciddi vurgu (“`) gibi bir kaçış karakteri içeriyorsa, yolu çözümlemek için yolu tek tırnak işaretleri içine alın. Örneğin, aşağıdaki komut, kaçış karakteri içeren bir yolu böler ve çözer.
Split-Path -Path 'C:\demo\subfolder1\dir`n\TestFile_2?.txt' -Leaf -ResolveKavramın bir kanıtı olarak, eğer bu yolu tek tırnak içine almazsanız, komut, yolun mevcut olmadığı yönünde bir hata döndürecektir. Bunun yerine çift tırnak işareti kullanırsanız da aynı hata meydana gelir.
Split-Path -Path C:\demo\subfolder1\dir`n\TestFile_2?.txt -Leaf -Resolve
Split-Path -Path "C:\demo\subfolder1\dir`n\TestFile_2?.txt" -Leaf -ResolveÇözüm
PowerShell Split-Path cmdlet'i hem sistem yöneticileri hem de kullanıcılar için vazgeçilmez bir araçtır. Bu eğitimin amacı, Split-Path cmdlet'inin herhangi bir yolu nasıl bölebileceğini ve kullandığınız parametreye bağlı olarak belirli öğeleri nasıl döndürebileceğini size öğretmeyi amaçladık.
Daha önce görevlerinizde Split-Path'i kullandınız mı? Değilse, bu eğitim sizi onu manuel veya otomasyon işlerinizde kullanmaya ikna etti mi? Veya yolları PowerShellBölünmüş Yol'un yapabileceğinden daha iyi bölmenin başka bir yolunu biliyor musunuz?











