PowershellSistem

Powershell Scriptlerini .exe Haline Getirme

PowerShell scriptlerini (.ps1 uzantılı dosyalar) EXE (uygulanabilir) dosyalara dönüştürmek, çeşitli nedenlerle arzu edilebilir. Bu işlem, scriptleri son kullanıcılara daha kullanıcı dostu bir format sunmak, dağıtımı kolaylaştırmak veya kodunuzu kaynak kod gözlemlemesine karşı korumak için yapılabilir. Bu yazıda, PowerShell scriptlerini EXE dosyalarına dönüştürme süreci adım adım ele alınacaktır.

  • PowerShell scripti (.ps1 dosyası)
  • EXE’ye dönüştürme aracı (Örneğin, PS2EXE, PowerGUI veya başka bir üçüncü parti araç)

PS2EXE Kullanarak Dönüştürme

PS2EXE, PowerShell scriptlerini doğrudan EXE dosyalarına dönüştüren popüler bir araçtır. GitHub üzerinden ücretsiz olarak indirilebilir ve PowerShell ile doğrudan kullanılabilir.

GitHub – MScholtes/Win-PS2EXE: Graphical frontend to PS1-to-EXE-compiler PS2EXE.ps1 sayfasından PS2EXE indirmesini yapmamız lazım github sayfası açıldıktan sonra dosyayı zip olarak indiriyoruz.

Dosyayı indirdikten sonra dosyayı size uygun bir yere çıkartabilirsiniz. Compile.bat isimdi dosya çalıştırıldıktan sonra en alttaki Win-PS2EXE.exe isimli dosya oluşacaktır. Grafik arayüzüne sahip .ps1 uzantılı scriptlerinizi dönüştürebileceğiniz ortamımız hazır. Bunun dışında aynı geliştirici bunu modül olarak da sunmakta tercih sizin, ben GUI arayüzüne sahip olan formattan ilerliyor olacağım.

Bir örnek üzerinden nasıl kullanılacağına bir bakalım. İlk önce powershell script yazalım.

Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing

# Form Oluştur
$form = New-Object System.Windows.Forms.Form
$form.Text = 'Bilgisayar Detaylı Bilgileri'
$form.Size = New-Object System.Drawing.Size(700,500)
$form.StartPosition = 'CenterScreen'

# TextBox Oluştur
$textBox = New-Object System.Windows.Forms.TextBox
$textBox.Dock = [System.Windows.Forms.DockStyle]::Fill
$textBox.Multiline = $true
$textBox.ScrollBars = [System.Windows.Forms.ScrollBars]::Vertical
$textBox.ReadOnly = $true

# Bilgileri Topla
$computerInfo = Get-ComputerInfo | Select-Object CsManufacturer, CsModel, CsName, WindowsProductName, WindowsVersion, OsHardwareAbstractionLayer
$cpuInfo = Get-WmiObject -Class Win32_Processor | Select-Object Name, DeviceID, Manufacturer, MaxClockSpeed, NumberOfCores, NumberOfLogicalProcessors
$ramInfo = Get-WmiObject -Class Win32_PhysicalMemory | Select-Object Manufacturer, Capacity, Speed, DeviceLocator
$diskInfo = Get-WmiObject -Class Win32_DiskDrive | Select-Object Model, InterfaceType, Size, MediaType
$networkInfo = Get-WmiObject -Class Win32_NetworkAdapterConfiguration | Where-Object { $_.IPEnabled -eq $true } | Select-Object Description, MACAddress, IPAddress, IPSubnet, DefaultIPGateway

# Bilgileri Metin Kutusuna Ekle
$textBox.Text = "Sistem Bilgileri:`r`n" + ($computerInfo | Format-List | Out-String) +
                "CPU Bilgileri:`r`n" + ($cpuInfo | Format-List | Out-String) +
                "RAM Bilgileri:`r`n" + ($ramInfo | Format-List | Out-String) +
                "Disk Bilgileri:`r`n" + ($diskInfo | Format-List | Out-String) +
                "Ağ Bilgileri:`r`n" + ($networkInfo | Format-List | Out-String)

# Form'a Kontrolleri Ekle
$form.Controls.Add($textBox)

# Formu Göster
$form.ShowDialog()

Bilgisayarımız hakkında işe yarayabilecek gerekli bilgileri getiren bir powershell script yazmış olduk bunu script’i .ps1 uzantılı olarak kaydedelim. Script biraz karışık gelebilir .exe formatına çevireceğimiz için çalıştırıldıktan sonra bir windows form olarak bize göstermesi için bazı C# kütüphanelerini kullanmak gerekli. Bir sürü powershell türetilebilir. Powershell hazır bu powershell’i .ps1 uzantısı ile kaydediyoruz.

Win-PS2EXE’yi çalıştırıyoruz.

  • Source File: Powershell dosyamızı gösteriyoruz.,
  • Target File: EXE haline getireceğimiz dosyanın, dosya yolunu gösteriyoruz. Yani gösterdiğimiz .ps1’i exe’ye çevirdiğinde oluşturacapı yer.
  • Icon File: EXE dosyamıza icon belirleyebiliyoruz.
  • Compile a graphic windows program (parameter -noConsole): Bu seçenek işaretlendiğinde, oluşturulan EXE dosyası bir komut penceresi göstermeden çalışacak bir grafiksel program olarak derlenir. Bu, arka planda çalışan veya bir GUI (Grafik Kullanıcı Arayüzü) içeren uygulamalar için kullanışlıdır.
  • Suppress output (-noOutput): Bu seçeneğin işaretlenmesi, programın standart çıkışını (stdout) bastırır. Yani program çalıştığında herhangi bir çıktıyı ekrana yazdırmaz.
  • Suppress error output (-noError): Benzer şekilde, bu seçenek işaretlendiğinde, programın hata çıktısını (stderr) bastırır. Yani hata mesajları ekrana yazdırılmaz.
  • Require administrator rights at runtime (parameter -requireAdmin): Bu seçenek seçildiğinde, EXE dosyası çalıştırıldığında yönetici hakları istenir. Yani kullanıcıdan, programı çalıştırmak için yönetici izinleri talep edilir. Bu, daha yüksek erişim hakları gerektiren işlemler için gereklidir.
  • Generate config file (parameter -configFile): Bu seçeneği işaretlemek, dönüştürme işlemi sırasında bir yapılandırma dosyası oluşturur. Bu dosya, dönüştürülen EXE dosyasının davranışlarını özelleştirmek için kullanılabilir.
  • Thread Apartment State: Bu seçenek, programın çalışma zamanında kullanacağı COM threading modelini ayarlar. “STA” (Single Thread Apartment), her thread’in kendi tekil COM nesnelerine sahip olduğu ve bunları kendi bağlamında işlediği modeldir. “MTA” (Multi Thread Apartment), birden fazla thread’in COM nesnelerine erişebildiği ve bunları paylaştığı modeldir.
  • Platform: Bu seçenek, hedef platformun mimarisini belirler. “AnyCPU” işaretlendiğinde, EXE dosyası 32-bit ve 64-bit her iki mimari üzerinde de çalışabilir şekilde derlenir. Diğer seçenekler arasında sadece 32-bit veya sadece 64-bit sistemler için derleme yapılabilir.

Compile değidiğimizde artık powershell script’imiz exe dosyasına çevrilmiş olacaktır.

Çift tıklayıp çalıştırdığımızda da script işlevini yerine getirerek bilgisayardaki bileşenlerin bilgilerini ekrana yazdıracaktır.

İlgili Makaleler

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu