Yedeklenmiş Sürücü Dizininden Sürücü Yükleme

PC hakkındaki genel bilgi ve ipucu paylaşım alanıdır.
Cevapla
Kullanıcı avatarı
TRWE_2012
Zettabyte1
Zettabyte1
Mesajlar: 15148
Kayıt: 25 Eyl 2013, 13:38
cinsiyet: Erkek
Teşekkür etti: 2505 kez
Teşekkür edildi: 5301 kez

Yedeklenmiş Sürücü Dizininden Sürücü Yükleme

Mesaj gönderen TRWE_2012 »

Merhabalar

NOT:

Valla böyle bir forum konusu açma niyetim yoktu....Ama @mehoaga 'ın ısrarlı isteği (dedim ki @Tarkan_dost'a da danışabilirsin kendisi böyle konularda mahir-usta, yok dinletemedim, illa ben...!!! :-D ) ile bu forum konusunu açtım.Umarım kendisi ve forum için yararlı olur.

PowerShell ile Sürücü Kurulumunu Otomatikleştirme (GUI Destekli) (Bu konu beni aşacak ama inşallah forum ahalisine rezil olmam...!)

Bu konuda sizlere, .cmd, .bat ve .inf uzantılı dosyalarla sürücü yükleme işini tam otomatik hale getiren, basit bir PowerShell arayüzü nasıl hazırlanır, adım adım anlatacağım.

Amaç

Elinizde bir sürücü klasörü varsa (örneğin 1 GB'lık)
İçindeki .cmd, .bat veya .inf dosyalarıyla sürücü yüklemesi yapıyorsanız
Bunları tek tıkla, sırayla çalıştıracak bir ara yüz (GUI) istiyorsanız

Gerekli Olanlar

Windows 10 veya 11
PowerShell (varsayılan olarak var)
Not Defteri
Yönetici yetkisi

Betiği Oluşturma

Masaüstünde şu adımları takip edin:

DriverInstallerGUI.ps1 adında bir dosya oluşturun.

İçine şunu yapıştırın:

Kod: Tümünü seç

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

$form = New-Object System.Windows.Forms.Form
$form.Text = "Sürücü Kurucu"
$form.Width = 600
$form.Height = 400

$btnSelect = New-Object System.Windows.Forms.Button
$btnSelect.Text = "Sürücü Dizinini Seç"
$btnSelect.Top = 20
$btnSelect.Left = 20
$btnSelect.Width = 200
$form.Controls.Add($btnSelect)

$logBox = New-Object System.Windows.Forms.TextBox
$logBox.Multiline = $true
$logBox.ScrollBars = "Vertical"
$logBox.Top = 60
$logBox.Left = 20
$logBox.Width = 540
$logBox.Height = 280
$logBox.Font = 'Consolas,10'
$form.Controls.Add($logBox)

$btnSelect.Add_Click({
    $folderBrowser = New-Object System.Windows.Forms.FolderBrowserDialog
    if ($folderBrowser.ShowDialog() -eq "OK") {
        $path = $folderBrowser.SelectedPath
        $logBox.AppendText("Dizin seçildi: $path`r`n")
        Get-ChildItem -Path $path -Recurse -Include *.cmd, *.bat | ForEach-Object {
            $logBox.AppendText("Çalıştırılıyor: $($_.FullName)`r`n")
            Start-Process -FilePath $_.FullName -Wait -NoNewWindow
        }
        Get-ChildItem -Path $path -Recurse -Include *.inf | ForEach-Object {
            $logBox.AppendText("Yükleniyor: $($_.FullName)`r`n")
            Start-Process -FilePath "pnputil.exe" -ArgumentList "/add-driver `"$($_.FullName)`" /install" -NoNewWindow -Wait
        }
        $logBox.AppendText(" Tüm işlemler tamamlandı.`r`n")
    }
})

$form.Topmost = $true
$form.ShowDialog()
Betiği Çalıştırmak (Çift Tıklama Yetmez!)

Betiği çift tıklamak çalıştırmaz, bu nedenle şu adımları izleyin:

PowerShell’i Yönetici Olarak Açın:

Başlat menüsüne “powershell” yazın
Sağ tıklayıp “Yönetici olarak çalıştır” seçin

Aşağıdaki komutları yazın:

Kod: Tümünü seç

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
Bu komut geçici olarak PowerShell güvenliğini devre dışı bırakır.

Ardından, masaüstüne geçip betiği çalıştırın:

Kod: Tümünü seç

cd "$env:USERPROFILE\Desktop" && .\DriverInstallerGUI.ps1
GUI arayüzü açılacak ve sürücü klasörünüzü seçerek işlemleri başlatabileceksiniz.

İLAVE EK NOTLARIM :

Kısayolla Tek Tıkla Çalıştırmak

Masaüstüne sağ tıklayın > Yeni > Kısayol oluşturun.

Komut satırına şunu yazın:

Kod: Tümünü seç

powershell.exe -ExecutionPolicy Bypass -File "C:\Klasör\DriverInstallerGUI.ps1"
"C:\Klasör\DriverInstallerGUI.ps1" kısmını siz kendinize göre değiştirin bu sadece örnek olsun diye yazıldı/gösterildi.

SONUÇ OLARAK :

Bu yöntem sayesinde:

Sürücü klasörlerini el ile kurmak zorunda kalmazsınız
.inf, .cmd ve .bat dosyaları sırayla ve sessizce çalışır
Her şey tek pencerede, loglarla birlikte görünür
Ve hiçbir ek program yüklemeden bunu yaparsınız!

.inf dosyaları pnputil komutu ile yüklenir. Windows 10/11’de dahili olarak vardır.
.cmd / .bat dosyaları varsa, sırayla çalıştırılır (örneğin özel kurulum scriptleri).

Yani hiçbir ek yazılım yüklemeden "yaptığımız şey sadece Windows’un kendi içinde gelen PowerShell ve .NET bileşenlerini kullanmamızdır"

@mehoaga inşallah yaparsın ....

KAYNAKLAR :

1. PowerShell Documentation
(Bu kaynak, PowerShell komutlarını, betik yazma, hata ayıklama ve GUI oluşturma hakkında kapsamlı bilgi sunuyor.)
https://docs.microsoft.com/en-us/powershell/

2. System.Windows.Forms
(Bu sayfa, Windows Forms ile GUI oluşturma hakkında bilgi sağlar. Burada kullanılan nesneler (örneğin Form, Button, TextBox vb.) hakkında detaylı bilgi bulabilirsiniz.)
https://docs.microsoft.com/en-us/dotnet ... ew=net-5.0

3. pnputil - Driver Installation
(pnputil komutunun kullanımı ve sürücü yükleme işlemleri hakkında açıklamalar yer alır. Bu araç, sürücüleri Windows'a yüklemek ve kaldırmak için kullanılır.)
https://docs.microsoft.com/en-us/window ... st/pnputil

4. Execution Policy in PowerShell
(PowerShell betiklerinin çalıştırılmasını engelleyen Execution Policy hakkında bilgi alabilirsiniz.)
https://docs.microsoft.com/en-us/powers ... tionpolicy

5. PowerShell Script to EXE (PowerShell to EXE)
(Yukarıdaki anlatımda .exe dosyası oluşturma adımını es geçtim çünkü defender çıkmazı var)
(PowerShell betiklerini .exe dosyasına dönüştürmek için kullanabileceğiniz popüler bir araç. Bu sayede .ps1 dosyasını tek tıkla çalıştırılabilir hale getirebilirsiniz.)
https://github.com/MScholtes/PS2EXE

6. PowerShell ISE (Integrated Scripting Environment)
(PowerShell betiklerinizi yazabileceğiniz ve hata ayıklayabileceğiniz yerleşik geliştirme ortamı olan PowerShell ISE hakkında bilgi sağlar.)
https://docs.microsoft.com/en-us/powers ... rshell-ise
Kullanıcı avatarı
TRWE_2012
Zettabyte1
Zettabyte1
Mesajlar: 15148
Kayıt: 25 Eyl 2013, 13:38
cinsiyet: Erkek
Teşekkür etti: 2505 kez
Teşekkür edildi: 5301 kez

Re: Yedeklenmiş Sürücü Dizininden Sürücü Yükleme

Mesaj gönderen TRWE_2012 »

Sonuç olarak ne yapıyor bu .PS1 betiği ?

Sürücü dizinini seçiyorsunuz (klasör seçme penceresi açılıyor)

İçindeki (dizinin) :

.cmd / .bat dosyaları sırayla çalıştırılıyor
.inf dosyaları pnputil ile yükleniyor

Yükleme günlükleri ekrana yazılıyor (GUI içinde)

NOT:

Sordum.net 'e ekmek (konu) çıktı....


NOT-2:

Yukarıda verdiğim kaynakların web bağlantıları zamanla değişebilir.(Özellikle Microsoft. zır-pırt bağlantıları değiştirip duruyorlar bu hintliler sinir oluyorum bunlara)
Kullanıcı avatarı
Kayserilifatih
Petabyte4
Petabyte4
Mesajlar: 9446
Kayıt: 30 Ağu 2024, 20:48
cinsiyet: Erkek
Teşekkür etti: 927 kez
Teşekkür edildi: 6991 kez

Re: Yedeklenmiş Sürücü Dizininden Sürücü Yükleme

Mesaj gönderen Kayserilifatih »

PowerShell'den genel olarak nefret ederim onun yerine ben sordum scripti ile yedek alıp driver backup programı ile kolayca geri yüklüyorum ya da Windows'ların iso dosyalarına driverleri entegre ediyorum bu şekilde kurduğumda driverler otomatik kurulu geliyor sistem ilk kurulduğu anda kafam rahat oluyor.

Konudaki önerilen yol da denenebilir. Şahsi kanaatimce Powershell çok vasattır ve oldum olası perişan olduğum bir programdır yani sürekli çalışan scriptlerin arasında sürekli bir kırmızı yazı göstermesi yok mu bana çok illallah ettirmiştir.

https://www.sordum.net/30598/bir-komutl ... edeklemek/

https://www.sordum.net/18118/surucu-driver-yedekleme/
Kullanıcı avatarı
TRWE_2012
Zettabyte1
Zettabyte1
Mesajlar: 15148
Kayıt: 25 Eyl 2013, 13:38
cinsiyet: Erkek
Teşekkür etti: 2505 kez
Teşekkür edildi: 5301 kez

Re: Yedeklenmiş Sürücü Dizininden Sürücü Yükleme

Mesaj gönderen TRWE_2012 »

DÜZENLENMİŞ SON SÜRÜM: DriverInstallerGUI.ps1

Kod: Tümünü seç

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

$form = New-Object System.Windows.Forms.Form
$form.Text = "Sürücü Yükleyici"
$form.Size = New-Object System.Drawing.Size(600,400)
$form.StartPosition = "CenterScreen"

$btnSelect = New-Object System.Windows.Forms.Button
$btnSelect.Location = New-Object System.Drawing.Point(20,20)
$btnSelect.Size = New-Object System.Drawing.Size(150,30)
$btnSelect.Text = "Klasör Seç"
$form.Controls.Add($btnSelect)

$btnInstall = New-Object System.Windows.Forms.Button
$btnInstall.Location = New-Object System.Drawing.Point(200,20)
$btnInstall.Size = New-Object System.Drawing.Size(150,30)
$btnInstall.Text = "Yüklemeyi Başlat"
$btnInstall.Enabled = $false
$form.Controls.Add($btnInstall)

$btnExit = New-Object System.Windows.Forms.Button
$btnExit.Location = New-Object System.Drawing.Point(380,20)
$btnExit.Size = New-Object System.Drawing.Size(150,30)
$btnExit.Text = "Çıkış"
$form.Controls.Add($btnExit)

$logBox = New-Object System.Windows.Forms.TextBox
$logBox.Multiline = $true
$logBox.ScrollBars = "Vertical"
$logBox.Location = New-Object System.Drawing.Point(20,70)
$logBox.Size = New-Object System.Drawing.Size(540,270)
$logBox.ReadOnly = $true
$form.Controls.Add($logBox)

$folderBrowser = New-Object System.Windows.Forms.FolderBrowserDialog
$global:SelectedFolder = ""

$btnSelect.Add_Click({
    if ($folderBrowser.ShowDialog() -eq "OK") {
        $global:SelectedFolder = $folderBrowser.SelectedPath
        $logBox.AppendText("✓ Klasör seçildi: $($global:SelectedFolder)`r`n")
        $btnInstall.Enabled = $true
    }
})

$btnInstall.Add_Click({
    $logBox.AppendText("Sürücü yükleme işlemi başladı...`r`n")

    $infFiles = Get-ChildItem -Path $global:SelectedFolder -Recurse -Filter *.inf

    foreach ($inf in $infFiles) {
        $logBox.AppendText("Yükleniyor: $($inf.FullName)`r`n")
        $result = pnputil /add-driver "`"$($inf.FullName)`"" /install
        $logBox.AppendText("$result`r`n")
    }

    $logBox.AppendText("✓ Tüm işlemler tamamlandı.`r`n")
})

$btnExit.Add_Click({
    $form.Close()
})

[void]$form.ShowDialog()
NOTLAR :

Dosyayı kayıt ederken : UTF-8 with BOM şeklinde kayıt edin.

Ekran Görüntüsü :
Resim
NOT:

Bu samimi bir itiraftır.

Ben, bir @Tarkan_dost değilim, ancak kendisini takip eden bir pc kullanıcısıyım.Benden fazla bilgi istemeyin çünkü uzman değilim...
Kullanıcı avatarı
velociraptor
Yottabyte4
Yottabyte4
Mesajlar: 53887
Kayıt: 14 Mar 2006, 02:33
cinsiyet: Erkek
Teşekkür etti: 19689 kez
Teşekkür edildi: 11953 kez

Re: Yedeklenmiş Sürücü Dizininden Sürücü Yükleme

Mesaj gönderen velociraptor »

Bende uzman değilim , Forumda bir uzman olduğunu düşünmüyorum hepimiz araştırarak birşeyler öğreniyoruz , ortak noktamız meraklı olmamız :arrow:
Kullanıcı avatarı
TRWE_2012
Zettabyte1
Zettabyte1
Mesajlar: 15148
Kayıt: 25 Eyl 2013, 13:38
cinsiyet: Erkek
Teşekkür etti: 2505 kez
Teşekkür edildi: 5301 kez

Re: Yedeklenmiş Sürücü Dizininden Sürücü Yükleme

Mesaj gönderen TRWE_2012 »

İsteyen olursa bu betiğin nasıl .exe dosyasına dönüştürülebileceğini anlatan bir kısa notum'da var ama baş belası Windows Defendar işin içine girince, olay çıkmaza giriyor.İsteyen olursa buraya notu eklerim.
Kullanıcı avatarı
mehoaga
Kilobyte4
Kilobyte4
Mesajlar: 790
Kayıt: 16 Eyl 2020, 13:52
cinsiyet: Erkek
Teşekkür etti: 3297 kez
Teşekkür edildi: 780 kez

Re: Yedeklenmiş Sürücü Dizininden Sürücü Yükleme

Mesaj gönderen mehoaga »

Değerli TRWE_2012 kardeşim;
Ellerine kollarına ve emeklerine sağlık çok teşekkürler. :arrow: Dediğin gibi inş yapabilirim benim için zor gibi ama biraz uğraşacağız gibi görünüyor. İYİKİ VARSINIZ. :arrow: Hepinize şükran borçluyum.
En son mehoaga tarafından 04 May 2025, 18:30 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Kullanıcı avatarı
mehoaga
Kilobyte4
Kilobyte4
Mesajlar: 790
Kayıt: 16 Eyl 2020, 13:52
cinsiyet: Erkek
Teşekkür etti: 3297 kez
Teşekkür edildi: 780 kez

Re: Yedeklenmiş Sürücü Dizininden Sürücü Yükleme

Mesaj gönderen mehoaga »

TRWE_2012 yazdı: 04 May 2025, 17:56 İsteyen olursa bu betiğin nasıl .exe dosyasına dönüştürülebileceğini anlatan bir kısa notum'da var ama baş belası Windows Defendar işin içine girince, olay çıkmaza giriyor.İsteyen olursa buraya notu eklerim.
Ekleyebilirsen ben ve ihtiyacı olan herkes kullanabilir kardeşim. :arrow:
Kullanıcı avatarı
TRWE_2012
Zettabyte1
Zettabyte1
Mesajlar: 15148
Kayıt: 25 Eyl 2013, 13:38
cinsiyet: Erkek
Teşekkür etti: 2505 kez
Teşekkür edildi: 5301 kez

Re: Yedeklenmiş Sürücü Dizininden Sürücü Yükleme

Mesaj gönderen TRWE_2012 »

SORU :

Seçilen sürücü ana dizininin içinde her sürücünün kendi dizini varsa betik gene çalışır değilmi?

CEVAP:

Evet, betik bu şekilde yapılandırılmıştır alt klasörlerdeki .inf dosyalarını da tarayıp yükler. Çünkü şu satırdaki -Recurse parametresi tam olarak bunu yapar:

Kod: Tümünü seç

$infFiles = Get-ChildItem -Path $global:SelectedFolder -Recurse -Filter *.inf
Yukarıdaki komut satırının sözel açılımı :

Kullanıcı, bir ana sürücü klasörü (örneğin D:\TümSürücüler) seçtiğinde,

Bu klasörün içinde her sürücü kendi alt klasöründe dursa bile
(örneğin: D:\TümSürücüler\WiFi, D:\TümSürücüler\Ses, D:\TümSürücüler\Ekran),

Betik, bu alt klasörlerin her birinde .inf uzantılı dosyaları bulur ve yükler.

Betik mekanizması, şu şekildeyse sorunsuz çalışır:

Kod: Tümünü seç

TümSürücüler\
├── WiFi\
│   └── xyz.inf
├── Ses\
│   └── abc.inf
├── Ekran\
│   └── def.inf
Betik hepsini görüp yükler.

NOT:

Windows PC Kullanıcı hayatım'da ilk ve ciddi oluşturduğum betik olduğu için biraz heyecanlıyım.(dönüp dönüp bir daha inceliyorum kodları sakın bir hata olmasın, forum'a da rezil olmayım diye)
Kullanıcı avatarı
mehoaga
Kilobyte4
Kilobyte4
Mesajlar: 790
Kayıt: 16 Eyl 2020, 13:52
cinsiyet: Erkek
Teşekkür etti: 3297 kez
Teşekkür edildi: 780 kez

Re: Yedeklenmiş Sürücü Dizininden Sürücü Yükleme

Mesaj gönderen mehoaga »

TRWE_2012 yazdı: 04 May 2025, 18:31 SORU :

Seçilen sürücü ana dizininin içinde her sürücünün kendi dizini varsa betik gene çalışır değilmi?

CEVAP:

Evet, betik bu şekilde yapılandırılmıştır alt klasörlerdeki .inf dosyalarını da tarayıp yükler. Çünkü şu satırdaki -Recurse parametresi tam olarak bunu yapar:

Kod: Tümünü seç

$infFiles = Get-ChildItem -Path $global:SelectedFolder -Recurse -Filter *.inf
Yukarıdaki komut satırının sözel açılımı :

Kullanıcı, bir ana sürücü klasörü (örneğin D:\TümSürücüler) seçtiğinde,

Bu klasörün içinde her sürücü kendi alt klasöründe dursa bile
(örneğin: D:\TümSürücüler\WiFi, D:\TümSürücüler\Ses, D:\TümSürücüler\Ekran),

Betik, bu alt klasörlerin her birinde .inf uzantılı dosyaları bulur ve yükler.

Betik mekanizması, şu şekildeyse sorunsuz çalışır:

Kod: Tümünü seç

TümSürücüler\
├── WiFi\
│   └── xyz.inf
├── Ses\
│   └── abc.inf
├── Ekran\
│   └── def.inf
Betik hepsini görüp yükler.

NOT:

Windows PC Kullanıcı hayatım'da ilk ve ciddi oluşturduğum betik olduğu için biraz heyecanlıyım.(dönüp dönüp bir daha inceliyorum kodları sakın bir hata olmasın, forum'a da rezil olmayım diye)
Yok artık daha neler. :?: sen yapacaksında olmayacak ben zannetmiyorum. :arrow:
Kullanıcı avatarı
TRWE_2012
Zettabyte1
Zettabyte1
Mesajlar: 15148
Kayıt: 25 Eyl 2013, 13:38
cinsiyet: Erkek
Teşekkür etti: 2505 kez
Teşekkür edildi: 5301 kez

Re: Yedeklenmiş Sürücü Dizininden Sürücü Yükleme

Mesaj gönderen TRWE_2012 »

mehoaga yazdı: 04 May 2025, 18:29
TRWE_2012 yazdı: 04 May 2025, 17:56 İsteyen olursa bu betiğin nasıl .exe dosyasına dönüştürülebileceğini anlatan bir kısa notum'da var ama baş belası Windows Defendar işin içine girince, olay çıkmaza giriyor.İsteyen olursa buraya notu eklerim.
Ekleyebilirsen ben ve ihtiyacı olan herkes kullanabilir kardeşim. :arrow:
PowerShell Betiğini .exe’ye Dönüştürme (Adım Adım)
Gerekli Araç: PS2EXE

Bu işlem için açık kaynaklı PS2EXE aracını kullanacağız.

1. ADIM: PS2EXE’yi Yükle (İnternet bağlantısı şart)

PowerShell’i Yönetici olarak aç.
Aşağıdaki komutu yaz:

Kod: Tümünü seç

Install-Module -Name ps2exe -Scope CurrentUser -Force
Gerekirse "Yes" (Y) sorularına onay ver.

2. ADIM: Betiğini EXE'ye Dönüştürme

Aşağıdaki komutu çalıştırarak .ps1 dosyanı .exe dosyasına dönüştürebilirsiniz ;

Kod: Tümünü seç

Invoke-ps2exe "C:\Users\Administrator\Masaüstü\DriverInstallerGUI.ps1" "C:\Users\Administrator\Masaüstü\DriverInstallerGUI.exe"
Buradaki ; C:\Users\Administrator kısmını kendi kullanıcı_hesap_adınız olacak şekilde değiştirin.

3. ADIM: EXE’yi Çalıştırma

Artık masaüstünüz de DriverInstallerGUI.exe adlı bir dosyanız olacak.
Çift tıklayınca tıpkı bir normal program gibi açılacak.

Şimdi .exe dosyasını biraz da süslü-püslü yapalım.(bana göre görsellikte önemlidir bir yazılım'da)

Kod: Tümünü seç

Invoke-ps2exe "DriverInstallerGUI.ps1" "DriverInstallerGUI.exe" -noConsole -title "Sürücü Yükleyici"
Yukarıdaki en gelişik komut yapısının sözel açıklaması :

-iconFile "C:\yol\simge.ico":Simge eklemek
-noConsole:Konsolsuz çalıştırma
-title "Sürücü Yükleyici":-title "Sürücü Yükleyici"
Kullanıcı avatarı
burak35
Zettabyte3
Zettabyte3
Mesajlar: 17556
Kayıt: 07 Eki 2016, 13:06
cinsiyet: Erkek
Teşekkür etti: 10117 kez
Teşekkür edildi: 11777 kez

Re: Yedeklenmiş Sürücü Dizininden Sürücü Yükleme

Mesaj gönderen burak35 »

Eline sağlık. Alternatif iyidir.
Cevapla

“Genel bilgiler ve ipuçları” sayfasına dön