Toplu Dosyayı PowerShell'den Çalıştırma [4 yol]


Windows PowerShell'de toplu dosyaları birden çok şekilde çalıştırabiliriz.

  • Toplu iş dosyasını, ve işareti (&) operatörünü kullanarak mutlak veya göreli yolu belirterek çalıştırma:

    bat dosyasını & operatörünü kullanarak çalıştırma:

    Write-Host "Running the Batch Script Now..."
    & C:\Scripts\testPS.bat
  • Toplu iş dosyasını Invoke-Expression cmdlet'ini kullanarak çalıştırma. Bu komut ve işareti operatörüyle (&) benzer şekilde çalışır, ancak bunu PowerShell tarzında yazıyoruz.

    invoke-expression komutunu kullanarak bat dosyasını çalıştırma:

    Invoke-Expression -Command ".\testPS.bat"
  • Toplu iş dosyasını komut istemi yürütülebilir dosyasını çağırarak çalıştırma:

    bat dosyasını powershell içindeki cmd'yi çağırarak çalıştırma:

    cmd.exe -/c ".\testPS.bat"
  • Toplu iş dosyasını Start-Process cmdlet'ini kullanarak çalıştırma. Diğer PowerShell komutumuz gibi bu cmdlet de yürütülebilir bir dosyayı çağırdığımızda benzer şekilde çalışır ancak bunu PowerShell tarzında yazıyoruz. Bu komut ayrıca değişkenleri dosyaya iletirsek argümanları da kabul eder.

    bat dosyasını start-expression komutunu kullanarak çalıştırma:

    Start-Process "cmd.exe" ".\testPS.bat" -Verb RunAs -NoNewWindow
    -Verb RunAs -NoNewWindow

PowerShell'de Toplu Dosyaları Çalıştırmanın Yolları

PowerShell, özellikle Windows işletim sistemi tabanlı bir platform veya makine üzerinde kullanılan modern komut dosyası oluşturma yöntemlerinden biridir. Ancak bazen, modernizasyona rağmen, eski kodlama dillerinin avantajlı olduğu bazı vasıfsız görevler hâlâ mevcuttur. Bunun bir örneği, bu eski komut dosyası oluşturma prosedürlerine Toplu komut dosyaları adı verilmesidir.

Windows her iki komut dosyası dilini de aynı platformda oluşturduğundan Toplu komut dosyalarını PowerShell'in içine kolayca dahil edebiliriz. Bu makalede Batch betiklerini PowerShell'e nasıl çalıştırabileceğimizi ve dahil edebileceğimizi tartışacağız.

PowerShell ortamında bir toplu iş dosyasını (BAT) veya betiği çalıştırmanın birkaç yolu vardır.

BAT dosyasını Mutlak ve Göreli Yolu Kullanarak Çalıştırma

İlk yöntemimiz için, BAT dosyasını sadece dosya yolunu veya konumunu çağırarak çalıştırabiliriz. Bunu yapmak için aşağıdaki adımları izleyin:

  1. PowerShell'i açın (tercihen yönetici modunda).
  2. Toplu iş dosyamızı veya betiğimizi yerleştirdiğimiz dizine gidelim. Gezinmek için check dizini veya cd komutunu kullanabiliriz. Bu örnek için C:\Scripts dizinine cd oluşturalım ve örnek toplu iş dosyasını bulalım.
  3. Toplu iş dosyasını veya komut dosyasını, adını yazıp Enter tuşuna basarak çalıştırın. Örneğin testPS.bat adında bir toplu iş dosyası oluşturursak aşağıdaki komutu kullanın:

bat dosyasının dosya adını çağırmak:

testPS.bat

Alternatif olarak, PowerShell komutunda göreceli veya mutlak yolunu belirterek bir toplu iş dosyasını veya betiğini çalıştırabiliriz. Örneğin, C:\Scripts dizininde bulunan bir toplu iş dosyasını çalıştırmak için aşağıdaki komutlardan birini kullanabiliriz:

yarasa dosyasının mutlak ve göreceli yolunu çağırmak:

.\testPS.bat
C:\Scripts\testPS.bat

Bunu bu şekilde yaparak, dizinin kendisine manuel olarak cd yazmamıza gerek kalmıyor. Göreli bir yol belirtmek için .\ sözdizimini kullandığımızı, tam yolun ise mutlak bir yolu belirttiğimizi unutmayın.

Ancak BAT dosyasını PowerShell komut satırı terminalinde çalıştırırsak yukarıdaki yöntem faydalı olacaktır. Ancak BAT dosyasını bir PowerShell dosyasına, belki de PowerShell ISE'ye dahil edersek ne olur?

Ve işareti (&) operatörünü kullanabilir ve bunu BAT dosya yollarımıza önek olarak kullanabiliriz. Ancak birincil işlevi komutları çalıştırmak olduğundan herhangi bir ek işlev yapmaz. Ancak bu iyi bir komut dosyası oluşturma uygulamasıdır ve &, PowerShell içinde yerel eski komutları çalıştırdığımızı gösterdiğinden kod okunabilirliğimizi artırır.

Örneğin, burada örnek bir PowerShell betiği verilmiştir:

powershell içindeki yarasa dosyasının mutlak ve göreceli yolunu çağırmak:

Write-Host "This is a powershell script."
Write-Host "Running the Batch Script Now..."
& C:\Scripts\testPS.bat

BAT dosyasını Invoke-Expression Komutunu Kullanarak Çalıştırma

Bir dizeyi sanki bir komutmuş gibi çalıştırmanıza olanak tanıyan Invoke-Expression cmdlet'ini kullanarak bir toplu iş dosyasını veya komut dosyasını çalıştırmak da mümkündür. & operatörünü kullanmak yerine her şeyi PowerShell tadıyla kodlamak istiyorsak bunu yapabiliriz. Örneğin, C:\Scripts dizininde bulunan bir toplu iş dosyasını çalıştırmak için aşağıdaki komutu kullanabilirsiniz:

yarasa dosyasını invoke-expression kullanarak çalıştırma:

Invoke-Expression -Command ".\testPS.bat"

Bir değişkende saklanan bir komutu çalıştırmak için Invoke-Expression cmdlet'ini de kullanabiliriz. Örneğin:

yarasa dosyasını invoke-expression örnek 2'yi kullanarak çalıştırma:

$batFileLocation = ".\testPS.bat"
Invoke-Expression -Command $batFileLocation

BAT dosyasını Komut İstemini Çağırarak Çalıştırma

PowerShell'de, diğer terminaller gibi yürütülebilir bir dosyayı çağırabiliriz. Ayrıca, Komut İstemi'nin cmd.exe adında özel bir yürütülebilir dosyaya sahip olması da iyidir. Bu yürütülebilir dosyayı, BAT dosyasını PowerShell ortamında bizim için çalıştırmak için kullanabiliriz.

Yalnızca cmd.exe dosyasına /c parametresini eklememiz ve yolu BAT dosyasına eklememiz gerekiyor. /c parametresi, dize değerini yürütülebilir dosyanın içindeki bir komuta dönüştüren önceki Invoke-Expression komutuna benzer.

bat dosyasını cmd exe'yi çağırarak çalıştırmak:

cmd.exe -/c ".\testPS.bat"

BAT dosyasını İşlem Başlat Komutunu Kullanarak Çalıştırma

Bu komut, son yöntem için tanıtılan önceki iki yola benzer. Bir işlemi (genellikle çalıştırılabilir bir dosya) başlatmak ve gerekirse argümanları iletmek için İşlemi Başlat komutunu kullanabiliriz. Bu komut, PowerShell yazma stilini koruyabildiğimiz için son yöntemden çok daha iyidir.

bat dosyasını start-process kullanarak çalıştırmak:

Start-Process -FilePath '.\testPS.bat' -NoNewWindow

İşlemi Başlat komutunu -FilePath ve -NoNewWindow olmak üzere iki parametreyle ekliyoruz. File path parametresi çalıştıracağımız BAT dosya konumunu belirler ve -NoNewWindow parametresi başka bir PowerShell penceresi açmadan geçerli pencerede tanımlı işlemi başlatır.

Alternatif olarak, -ArgumentList parametresini kullanarak önceki komutu argümanları kabul edecek şekilde dönüştürebiliriz.

yarasa dosyasını argümanlarla birlikte invoke-expression'da çalıştırmak:

Start-Process -FilePath 'cmd.exe' -ArgumentList @("/C", "'testfilePS.bat'") -Verb RunAs -NoNewWindow

Gördüğümüz gibi PowerShell'in Yönetici modunda süreci başlatmasını sağlayacak RunAs değerine sahip -Verb adında yeni bir parametre de ekledim.

Değerleri kısa yol olarak sunarak bunu daha da basitleştirebiliriz. Artık komutumuz önceki komutlarımıza benzeyecek ancak PowerShell betik stilinde yazılmış olacak.

yarasa dosyasını çağırma ifadesi kısaltmasıyla çalıştırmak:

Start-Process "cmd.exe" ".\testPS.bat" -Verb RunAs -NoNewWindow

İlk değer hangi işlemin başlatılacağını belirtir, ikinci değer ise argümanlarla birlikte (varsa) dosya yoludur.

Bunlar, PowerShell ortamında toplu iş dosyalarının veya komut dosyalarının çalıştırılmasına ilişkin örneklerdir. Özel ihtiyaçlarımıza bağlı olarak scriptlerimizi ve toplu iş dosyalarımızı çalıştırmak için farklı yaklaşımlara ihtiyaç duyabiliriz.

Hepsi PowerShell'de yarasa dosyasının nasıl çalıştırılacağıyla ilgili

İlgili makaleler