Toplu Dosyadan PowerShell Betiğini Çalıştırın


Belirtilen PowerShell betiğini toplu iş dosyasından çalıştırmak için aşağıda verilen birkaç adımı uygulamamız gerekmektedir.

  1. Bir PowerShell Betiği oluşturun.
  2. Bir Toplu Dosya oluşturun.
  3. PowerShell Betiğini yürütmek için Toplu İş dosyasını çalıştırın (toplu iş dosyası).

PowerShell Betiği Oluşturma

Aşağıdaki komutu içeren bir .ps1 komut dosyası oluşturun.

Komut Dosyasını Bilgisayarda Oluşturun:

write-output  "Script generated"

Yukarıdaki scripti .ps1 uzantılı bir metin dosyasına kaydettik ve onu Script.ps1 olarak adlandırdık; bu durumda .ps1 uzantısını kullanarak istediğiniz adı verebilirsiniz.

NOT: PowerShell komut dosyaları .ps1 uzantılı basit metin dosyalarıdır. PowerShell ISE programı aracılığıyla çalıştırılabilir. .BAT son ekine sahip bir metin dosyası bir toplu iş dosyasıdır. Toplu iş dosyasını özel olarak çalıştırmak için Komut İstemi'ni kullanın. Ancak betiği yürütmek için PowerShell betiği yerine toplu iş dosyasının kullanılmasının gerekli olduğu durumlar olabilir.

Toplu Dosya Oluşturma

Notepad'i başlatın ve bir toplu iş dosyası oluşturmak için aşağıdaki kod satırlarını girin. Bu dosyayı .bat uzantısıyla kaydetmeyi unutmayın; Script.bat olarak kaydettik.

Bir Toplu iş dosyası oluşturun:

@echo off
powershell.exe  "F:\Sara\Downloads\Script.ps1"
pause

Toplu programlarda echo off komutu kullanıldı; dizinlerin ve komutların tekrarlanmasını durduracaktır. Toplu programlara yazarken ve örnek bir kullanıcı arayüzü oluştururken kullanışlıdır. Daha sonra aşağıdaki komutu PowerShell script dosya yolunu çift tırnak içinde yazacağız. Son olarak pause komutu, klavyede bir tuşa bastıktan sonra Komut İstemi konsolunu kapatacaktır.

Toplu Dosyadan PowerShell Komut Dosyasını Çalıştırmanın Farklı Yolları

Birinci ve ikinci adımlarda PowerShell betiğini ve toplu iş dosyasını oluşturduk. Şimdi belirtilen PowerShell betiğini bir toplu iş dosyasından çalıştırmanın zamanı geldi. Aşağıdaki yolları kullanarak çalıştırabiliriz:

  • -File Parametresini Kullanma
  • RemoteSigned'ı -ExecutionPolicy olarak kullanma
  • Bypass Anahtarını Kullanma
  • Yönetici olarak çalıştır

Her yöntem için sağlanan kod pasajını önceki bölümde oluşturduğumuz .bat dosyasına kaydedeceğiz. Sonrasında bu .bat dosyasına çift tıklayarak veya PowerShell üzerinde .\Script.bat olarak çalıştırarak çalıştırabiliriz.

-File Parametresini kullanın

.bat dosyasından PowerShell betiğini çalıştırmak için -File parametresini kullanın.

-Dosya Parametresini kullanın:

@echo off
powershell -File F:\Sara\Downloads\Script.ps1
pause

ÇIKTI:

Script generated
Press any key to continue . . .

-File parametresini kullanarak bir .bat dosyasından bir PowerShell betiği çalıştırdık. Yukarıdaki kodun bir .bat dosyasına kaydedildiğini unutmayın. @echo off komutu, toplu iş dosyasının içeriğinin görüntülenmesini veya yankılanmasını durdurur. pause komutu, siz Shift ve Ctrl dışında herhangi bir tuşa basana kadar toplu iş dosyasının yürütülmesini durdurur; Windows komut yorumlayıcısına verdiğiniz herhangi bir komut otomatik olarak yankılanır.

Sonuç olarak, bir toplu iş dosyası çalıştırıldığında çıktı, toplu iş dosyasında yer alan her satırı içerecektir. echo off komutuyla bu davranışı durdurabilirsiniz. Ayrıca, echo off komutundan önce bir imza işareti (@) kullanırsanız hiçbir yankı döndürülmeyecektir. -File parametresini kullanarak bir PowerShell betiği çalıştırdık ve yukarıdaki çıktıda gösterildiği gibi oluşturulan çıktı Betiğini aldık.

RemoteSigned'ı -File Parametresi ile -ExecutionPolicy olarak kullanın

Bir toplu iş dosyasından PowerShell betiğini yürütmek için RemoteSigned'ı -ExecutionPolicy olarak ayarlayın. -ExecutionPolicy seçeneği PowerShell yürütme politikasını belirtir.

RemoteSigned'ı -ExecutionPolicy olarak kullanın:

@echo off
powershell -ExecutionPolicy RemoteSigned -File F:\Sara\Downloads\Script.ps1
pause

ÇIKTI:

Script generated
Press any key to continue . . .

PowerShell'in -ExecutionPolicy özelliği, yalnızca imzalı komut dosyalarına izin vererek tüm komut dosyalarının çalışmasının kısıtlanmasına olanak tanır. Varsayılan yürütme politikası uzaktan imzalı'dır. Komut dosyaları bu politika kapsamında yürütülmek üzere yürütülebilir.

İnternetten indirilen komut dosyalarını ve yapılandırma dosyalarını çalıştırmak için dijital imzalar gerekir. Ancak yerel sistemde oluşturulan dosyaları başlatmak için dijital imzalara gerek yoktur.

Dosyaları dijital imza olmadan çalıştırmak için bir unlock-File cmdlet'i gerekir. Komut dosyalarını dijital imza olmadan yürütmek ölümcül olabilir. Bu durumda, yerel makinemizde RemoteSigned'ı -Executionpolicy olarak ayarlayarak bir toplu iş dosyasından bir PowerShell betiği çalıştırdık. Yukarıdaki toplu iş dosyasını kullanarak başarıyla çalıştırdık.

Bypass'ı -File Parametresi ile -ExecutionPolicy olarak kullanın

Bir PowerShell betiğini çalıştırmak için -Bypass Anahtarını kullanın.

Baypas Anahtarını Kullanın:

@echo off
powershell -ExecutionPolicy Bypass -File F:\Sara\Downloads\Script.ps1
pause

ÇIKTI:

Script generated
Press any key to continue . . .

Yukarıdaki duraklat komutu etkinleştirildiğinde, Devam etmek için herhangi bir tuşa basın... mesajı görüntülendi ve komut, kullanıcının herhangi bir tuşa basmasını bekledi. Tek bir Powershell.exe çalıştırması sırasında yürütme politikasını geçici olarak değiştirirken, Bypass'ın kullanılması
sed anlamına gelir. Bu şekilde yukarıdaki Bypass anahtarını kullanarak bir PowerShell Komut Dosyasını başarıyla çalıştırdık.

Yönetici olarak çalıştır

.bat dosyasından bir PowerShell betiği çalıştırmak için PowerShell'i yönetici olarak başlatmak üzere aşağıdaki komutu kullanın. Bir toplu iş dosyasını açtığınızda ve Evet'i seçtiğinizde çıktı Windows PowerShell'de görülecektir.

Yönetici olarak çalıştırın:

@echo off
PowerShell -NoProfile -ExecutionPolicy Bypass -File F:\Sara\Downloads\Script.ps1 -Verb RunAs
pause

ÇIKTI:

Script generated
Press any key to continue . . .

Hepsi Batch dosyasından powershell betiğinin nasıl çalıştırılacağıyla ilgili.

İlgili makaleler