- PowerShell Listelemenize, filtrelemenize ve dışa aktarmanıza olanak tanır sürücüler Get-WmiObject ve Get-WindowsDriver gibi cmdlet'lerle.
- sürücü sorgusu, Aygıt Yöneticisi ve SCCM (Get-CMDriver) denetleyici envanterini tamamlar.
- Dinamik olarak yüklenen bazı sürücüler WinDbg veya doğrulayıcı gibi ek araçlara ihtiyaç duyar.
- PSWindowsUpdate gibi modüller ve harici yardımcı programlar sürücüleri güncellemeyi ve güncel tutmayı kolaylaştırır.
Windows ortamlarında, hangi sürücülerin yüklendiğini ve her birinin hangi sürüme sahip olduğunu kontrol edin Sistem kararlılığını korumak, mavi ekran sorunlarını gidermek veya geçişlere hazırlanmak için önemlidir. PowerShell, Aygıt Yöneticisi'ni tek tek incelemek zorunda kalmadan bu tür envanterleri gerçekleştirmek için inanılmaz derecede kullanışlı bir araç haline geldi.
Aşağıdaki satırlarda göreceksiniz Denetleyicileri PowerShell'den çeşitli şekillerde nasıl listeleyebilir ve nasıl dışa aktarabilirsiniz? Dosyaları sakin bir şekilde analiz etmek, diğerleriyle aralarında ne gibi farklar olduğunu görmek için komutlar olarak driverquery veya grafiksel araçlar ve hatta çevrimdışı görüntüler veya dinamik olarak yüklenen sürücüler gibi daha gelişmiş senaryoların nasıl ele alınacağı.
Sürücü nedir ve neden PowerShell'den listelemek istersiniz?

Windows'ta bir denetleyici veya sürücü işletim sistemi ile bir bileşen arasında aracı görevi gören küçük bir yazılım bloğu donanım (grafik kartı, yonga seti, depolamaçevre birimleri USBvb.) İşgal ettikleri kod çok büyük olmasa da sistem kararlılığına olan etkileri çok büyüktür.
Kritik bir sürücü (örneğin, depolama, ağ, grafik veya yonga seti) arızalar, kazalara, performans kaybına ve hatta mavi ekranlar (BSOD)Bu nedenle, hataları ayıklarken veya büyük bir güncellemeye hazırlanırken yüklü sürücülerin ve sürümlerinin açık bir listesine sahip olmak çok faydalıdır.
Sürücüleri değiştirmek, kaldırmak veya geri almak için acele etmeden önce, iyi bir fikirdir sistem geri yükleme noktasıyla riskleri en aza indirinBu şekilde, bir sürücü güncellemesi ters giderse ve bilgisayar garip davranmaya başlarsa veya düzgün bir şekilde önyükleme yapmazsa geri dönebilirsiniz.
Restorana ek olarak, tavsiye edilir önemli verileri yedekleyin (belgeler, fotoğraflar, çalışma projeleri vb.), özellikle depolama sürücülerine dokunacaksanız, çünkü bir hata sistemin sürücüleri doğru şekilde bağlamamasına veya bilgilerin bozulmasına neden olabilir.
Yüklü sürücüleri listelemek için PowerShell'de temel komut
PowerShell'den bir denetleyici envanteri elde etmenin en doğrudan yolu WMI'ye güveninEn sık kullanılan komutlardan biri şudur:
Get-WmiObject Win32_PnPSignedDriver | Select DeviceName, DriverVersion
Bu cmdlet ile, PowerShell, Win32_PnPSignedDriver WMI sınıfını sorgular ve imzalı PnP sürücülerinin bir listesini, aygıt adı ve sistemin şu anda onunla ilişkili olduğu sürücü sürümüyle birlikte döndürür.
Her sürücü hakkında biraz daha fazla bağlam istiyorsanız, şu gibi alanlar ekleyebilirsiniz: kolay isim, yayın tarihi veya üretici. Örneğin:
Get-WmiObject Win32_PnPSignedDriver | Select DeviceName, FriendlyName, Manufacturer, DriverVersion, DriverDate
Bu danışmanlıkla şunları elde edeceksiniz: Her giriş için çok daha eksiksiz bilgilerBu, eski sürümleri, belirli üreticileri veya yıllardır güncellenmemiş sürücüleri tespit etmenizi sağlar.
Sürücü listesi bir dosyaya (TXT veya CSV) nasıl aktarılır?
Gerçek dünya koşullarında, listeyi yalnızca ekranda görüntülemek nadiren yeterli olur. En uygun yaklaşım... sonucu bir dosyaya kaydet Excel'de analiz etmek, ekiple paylaşmak veya herhangi bir değişiklik yapmadan önce sistemin durumunun anlık görüntüsünü tutmak için, örneğin, eski sürücüleri sil.
Yalnızca hızlı bir düz metin listesine ihtiyacınız varsa çıktıyı bir dosyaya yönlendirebilirsiniz:
Get-WmiObject Win32_PnPSignedDriver | Select DeviceName, DriverVersion > C:\drivers.txt
Bu komut bir dosya oluşturur C:\sürücüler.txt Basit bir cihaz ve sürüm listesiyle. Hızlı referans veya çok fazla uğraşmadan bir rapora eklemek için idealdir.
Filtreleme ve sıralama için daha yönetilebilir bir şey arıyorsanız, en iyi seçenek kullanmaktır CSV ve Export-CSV cmdlet'iÇok yaygın bir örnek şöyle olabilir:
Get-WmiObject Win32_PnPSignedDriver | Select DeviceName, FriendlyName, DriverVersion, DriverDate | Export-CSV -Path "./MisDrivers.csv" -NoTypeInformation
Bu komutla, adlı bir dosya Sürücülerim.csv Excel veya herhangi bir elektronik tablo programında açabileceğiniz sürüme göre sırala, sürücü tarihine göre filtrele, belirli üreticileri ara, vb.
Bazen PowerShell'in sürücü listesini "dışa aktarmaya izin vermediği" söylense de, gerçekte Evet, sorunsuz bir şekilde dışarı aktarılabilir. Az önce gördüğünüz gibi çıktı yönlendirme veya Export-CSV özelliğini kullanabilirsiniz. Ardından bu bilgileri istediğiniz yere kopyalayabilir, yapıştırabilir veya üzerinde çalışabilirsiniz.
Sürücüleri üreticiye, ada veya belirli metne göre filtreleyin
Normalde tüm sürücüleri aynı anda görmek istemezsiniz; bunun yerine belirli bir üreticiye veya cihaz türüne odaklanmanız gerekir. Bunun için şunları yapabilirsiniz: Where-Object ile zincirleme filtreleri Her sürücünün özellikleri hakkında.
Örneğin, yalnızca sürücüleri tutmakla ilgileniyorsanız IntelŞu kadar basit bir şey yapabilirsiniz:
Get-WmiObject Win32_PnPSignedDriver | Select DeviceName, DriverVersion | Where-Object { $_.DeviceName -like "*Intel*" }
Bu komut, WMI tarafından döndürülen tüm girdileri yineler ve Yalnızca cihaz adı "Intel" dizesini içerenleri korurYıldız işaretini joker karakter olarak kullanmak, metnin herhangi bir yerinde kısmi eşleşmeleri aramanıza olanak tanır.
Aynı fikir, örneğin belirli bir uygulama veya donanım türüyle ilgili sürücüleri bulmak için de kullanılabilir. USB sürücülerini güncelleRotanın adının bir kısmını, üreticisini veya bir desenini biliyorsanız, filtreyi en konforlu mülke uyarlayın herbir durumda.
Aygıt Yöneticisi ve diğer Windows araçlarından sürücüleri görüntüleyin
PowerShell, listeleri otomatikleştirmek ve dışa aktarmak için çok güçlü olmasına rağmen, Windows hala denetleyicileri yönetmek için klasik grafiksel araçlar bilinmesi ve komut yolu ile birleştirilmesi gerekir.
İlk referans noktası şudur: Aygıt YöneticisiBu menüye, "Bu Bilgisayar"a sağ tıklayıp "Yönet"i seçerek veya daha hızlı bir şekilde Başlat düğmesinin içerik menüsünü (Windows + X) kullanarak erişebilirsiniz. Burada, sisteme yüklü tüm donanım kategorilerini içeren bir ağaç göreceksiniz.
Kurulum veya işletim sorunları olan cihazlar sıklıkla şu şekilde ortaya çıkar: sarı bir uyarı simgesiBunlardan herhangi birine çift tıkladığınızda özellikler penceresi açılır, buradan cihaz durumunu kontrol edebilir ve "Sürücü" sekmesine ulaşabilirsiniz.
Bu sekmede şu gibi seçenekler bulacaksınız: "Sürücü ayrıntıları", "Sürücüyü güncelle", "Sürücüyü geri al", "Devre dışı bırak" veya "Kaldır"Bu eylemler, sürücü dosyalarını görüntülemenize, yeni sürümleri aramanıza, önceki bir sürüme geri dönmenize, aygıtı kaldırmadan devre dışı bırakmanıza veya sürücüyü sistemden tamamen kaldırmanıza olanak tanır.
Bu araçlara ek olarak, Windows şu komutu içerir: driverquery kullanmak için komut istemi (CMD). Koşma driverquery Yüklü tüm sürücülerin bir listesini alacaksınız ve driverquery /v Bellek kullanımı, derleme tarihi veya durum gibi daha ayrıntılı bilgiler göreceksiniz.
driverquery ve PowerShell ile ilişkisi
Driverquery komutu oldukça esnektir ve şunları sağlar: Sürücü durumunun farklı görünümlerini görüntüleyinÖrneğin, yalnızca imzalı sürücüleri daha ayrıntılı olarak listelemek istiyorsanız, şunu çalıştırabilirsiniz:
driverquery /si
Bu mod şunu gösterir: ek yararlı bilgiler içeren imzalı sürücüler Güvenlik denetimleri veya bütünlük kontrolleri için her zaman danışabilirsiniz. driverquery /? Mevcut tüm parametreleri görmek ve çıktıyı ihtiyaçlarınıza göre ayarlamak için.
Driverquery'nin avantajlarından biri de şudur: ConvertFrom-CSV kullanarak bunu PowerShell ile entegre edebilirsinizÇıktıyı CSV formatında oluşturup yönlendirirseniz, PowerShell'den işlenebilen nesneler elde edersiniz. Klasik bir örnek şöyle olabilir:
driverquery.exe /v /fo csv | ConvertFrom-CSV | Select-Object "Display Name", "Start Mode", "Paged Pool(bytes)", Path
Bunu birleştiriyorsun PowerShell veri işleme ile sürücü sorgusunun gücüYalnızca ilgilendiğiniz sütunları seçin: görünen ad, başlatma modu, disk belleği belleği ve diskteki sürücü yolu. Bu, belirli türlere göre filtrelemek istediğinizde kullanışlıdır, örneğin: grafik sürücüleri.
Hem sürücü sorgusunun hem de belirli standart WMI sorgularının öncelikle şu konulara odaklandığı unutulmamalıdır: sistemde kayıtlı sürücüler, birçoğu yüklendi çizme veya HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services adresindeki kayıt defteri aracılığıyla yönetilir. Çalışma zamanında dinamik olarak eklenen bazı sürücüler bu listelerde görünmeyebilir.
Get-WindowsDriver ile PowerShell'den sürücüleri listeleyin
Daha gelişmiş senaryolar için, özellikle de Windows çevrimdışı görüntüleri (örneğin, bağlanmış WIM'ler), cmdlet çok kullanışlıdır WindowsSürücüsünü AlPowerShell'den erişilebilen DISM araçlarının bir parçasıdır.
Bu cmdlet, hem çalışan Windows kurulumu hem de bir klasöre bağlanmış bir görüntü için sürücü paketleri hakkında bilgi görüntülemenizi sağlar. Ana sözdizimi iki ana kullanım moduna ayrılmıştır: çevrimdışı ve çevrimiçi.
Bir için bir klasöre monte edilmiş çevrimdışı görüntüGenel biçimi şöyle olacaktır:
Get-WindowsDriver -Path "C:\offline"
Ve çalışan sisteme karşı çalışmak için, şu parametreyi kullanırsınız: -İnternet üzerinden:
Get-WindowsDriver -Online
Ek parametreler olmadan Get-WindowsDriver üçüncü taraf sürücülerin listesini döndürür Resimde mevcut. Değiştiriciyi eklerseniz -TümAyrıca Windows'ta varsayılan olarak dahil edilen varsayılan sürücüleri de göreceksiniz.
Get-WindowsDriver'ın temel parametreleri
En önemli parametrelerden biri Sürücübelirtmenize olanak tanır belirli bir .inf dosyası veya .inf dosyalarının bir klasörü Bu sürücüler hakkında ayrıntılı bilgi edinmek için. Bir klasörü işaret ederseniz, geçerli sürücü paketi olmayan .inf dosyaları otomatik olarak yok sayılır.
Çevrimdışı bir görüntüyle çalışırken, parametre -Yol Bağlanan görüntünün kök yolunu belirtir. Windows klasörü o kök düzeyinde değilse, şunu kullanabilirsiniz: -Windows Dizini bulunduğu göreceli alt klasörü belirtmek için.
Parametre -SistemSürücüsü Windows PE'de çalışırken ve önyükleme yöneticisi farklı bir bölümdeyken olduğu gibi daha özel senaryolarda kullanılır. Bu durumlarda, BootMgr dosyalarını içeren sürücünün hangi sürücüye hizmet vereceğini belirtmek için kullanılır.
Etkinlik günlüğü ile ilgili olarak, parametre -GünlükYolu Günlük dosyasının tam yolunu tanımlamanıza olanak tanır. Ayarlamazsanız, varsayılan yol kullanılır. %WINDIR%\Logs\Dism\dism.logveya Windows PE'de RAM'deki geçici alan. Bu arada, -GünlükSeviyesi günlüğün ayrıntı düzeyini belirler, değerler yalnızca hatalardan hata ayıklama bilgilerini de içerecek şekilde değişir.
Son olarak, parametre -Scratch Rehberi Bu, hizmet işlemleri sırasında dosyaların çıkarıldığı geçici klasördür. Yerel bir yol olmalıdır ve işlem tamamlandıktan sonra, geçici dosyalar Hiçbir kalıntı bırakmayacak şekilde otomatik olarak çıkarılırlar.
Get-WindowsDriver ile pratik örnekler
Mevcut Windows kurulumunuz için tüm sürücüleri hızlıca görmek için şunu çalıştırabilirsiniz:
Get-WindowsDriver -Online -All
Bu komut gösterecektir tüm sürücüler (hem sistem hem de üçüncü taraf) Çalışan görüntüde mevcut. WMI veya Aygıt Yöneticisi kullanmadan hangi paketlerin yüklendiğini görmenin çok doğrudan bir yoludur.
ile çalışıyorsanız C:\offline'a bağlanmış görüntü Ve eğer sadece üçüncü taraf sürücüleri kontrol etmek istiyorsanız, aşağıdakileri yapabilirsiniz:
Get-WindowsDriver -Path "C:\offline"
Bu görüntüdeki belirli bir OEM sürücüsünün ayrıntılı raporunu istiyorsanız, .inf dosyasını belirtmeniz yeterlidir:
Get-WindowsDriver -Path "C:\offline" -Driver "OEM1.inf"
Örneğin, belirli bir sürücü yolunda bulunan bir .inf dosyasını bile hedefleyebilirsiniz:
Get-WindowsDriver -Path "C:\offline" -Driver "C:\drivers\Usb\Usb.inf"
Ve todos estos casos, Get-WindowsDriver nesneleri döndürür Bilgileri en uygun biçime filtrelemek, sıralamak veya dışa aktarmak için Select-Object, Where-Object veya Export-CSV'ye yönlendirebilirsiniz.
PowerShell ve SCCM: Sürücü katalogları için Get-CMDriver
Bir kurumsal ortamı yönettiğinizde Yapılandırma Yöneticisi (SCCM)Sadece her bilgisayardaki sürücülerle değil, aynı zamanda SCCM'nin görüntüleri ve paketleri dağıtmak için sürdürdüğü merkezi sürücü kataloğuyla da ilgileniyorsunuz.
Bu bağlamda cmdlet devreye giriyor. CMDriver'ı Alın, Bu işe yarar Yapılandırma Yöneticisi tarafından yönetilen aygıt sürücülerinden bilgi alınBu cmdlet'in, sorgulamak istediğiniz şeye bağlı olarak çeşitli imzaları vardır: ada göre, sayısal tanımlayıcıya göre, sürücü paketine göre veya yönetim kategorisine göre.
Temel sözdizimi şu gibi varyantları içerir:
Get-CMDriver
Get-CMDriver -DriverPackageId <String>
Get-CMDriver -DriverPackageName <String>
Get-CMDriver -Id <Int32>
Get-CMDriver -InputObject <IResultObject>
Bu parametrelerle sorgularınızı SCCM kataloğuna yönlendirebilir ve filtreleme yapabilirsiniz. sürücü adı, tanımlayıcı, ilişkili paketler veya yönetim kategorileri Denetleyicilerinizi düzenlemek için tanımladığınız.
Get-CMDriver ile örnekler
Örneğin "Surface Serial Hub Driver" gibi belirli bir sürücünün adını biliyorsanız, ayrıntılarını şu şekilde elde edebilirsiniz:
Get-CMDriver -Name "Surface Serial Hub Driver"
Adlarında aynı öneki paylaşan birden fazla sürücüyü (örneğin tüm Surface sürücü ailesi) kontrol etmeniz gerektiğinde ve yalnızca bazı ilgili özellikleri görmek istediğinizde, şunun gibi bir şey kullanabilirsiniz:
Get-CMDriver -Fast -Name "Surface*" | Select-Object LocalizedDisplayName, DriverVersion, DriverDate
değiştirici -Hızlı Alınan bilgi miktarını azaltır ve sorguyu hızlandırır; bu da büyük kataloglarda oldukça belirgindir. Ardından, Select-Object ile, Sadece sizin için yararlı olan sütunları tutarsınız Analiziniz için.
Yönetimsel kategorileri yönetiyorsanız (örneğin, tüm denetleyicileri grupladığınız bir "Yüzey" kategorisi), kategori ve sürücü alımını şu şekilde zincirleyebilirsiniz:
$category = Get-CMCategory -Name "Surface"
Get-CMDriver -Fast -AdministrativeCategory $category
Bu durumda, önce kategoriyi bir değişkende saklarsınız ve ardından Get-CMDriver'dan bunu size döndürmesini istersiniz bu kategoriyle ilişkili tüm denetleyiciler, SCCM'de denetleyicilerinizin mantıksal görünümlerini korumak için çok kullanışlı bir şey.
Dinamik olarak yüklenen sürücüleri listelerken sınırlamalar
Tüm sürücüler aynı şekilde davranmaz. Paketteki bazı araçlar gibi. Sysinternals (örneğin, Process Explorer veya handle.exe)Başlangıçta yüklenen geleneksel servisler olarak kaydedilmeden, çalıştırıldıklarında sürücüleri çekirdeğe dinamik olarak enjekte eden.
Tipik bir örnek sürücüdür procexp152.sys (veya procexp113.sys gibi önceki sürümler), Process Explorer ile ilişkilidir. Bu sürücü türü, standart sorgularda görünmeyebilir. Get-WmiObject Win32_SystemDriverçünkü bu sorgular kayıt defteri hizmetlerinden (CurrentControlSet\Services) gelen bilgilere dayanır ve genellikle sisteme yüklenen sürücüleri yansıtır.
Benzer şekilde, driverquery dinamik olarak eklenen tüm sürücüleri listelemeyebilirDolayısıyla, üçüncü taraf araçların kendi sürücülerini yüklemesinin neden olduğu BSOD'ları veya anormal davranışları ayıklıyorsanız, başka yöntemlere başvurmanız gerekebilir.
Bu alternatifler arasında şunlar yer almaktadır: muayene etmek bellek dökümleri çekirdek WinDbg gibi araçlarla veya şu yardımcı programları kullanarak verifier.exeSürücü doğrulayıcı, izlemek istediğiniz sürücüleri seçmenize ve dengesiz davranışları tespit etmenize olanak tanır; ancak grafiksel arayüz, doğrulamayı sorgulamaya ve yapılandırmaya odaklanan komut satırı sürümünden daha fazla numaralandırma seçeneği sunar.
Kısacası, genel bir envanter ve çoğu idari ihtiyaç için, PowerShell, WMI ve Get-WindowsDriver bu işi çok iyi bir şekilde hallediyor.Ancak, sıcak yüklenen sürücülerin hata ayıklaması gibi aşırı durumlarda, çekirdek analiz araçlarıyla desteklemeniz gerekecektir.
Sürücüleri PSWindowsUpdate kullanarak PowerShell ile güncelleyin
Sürücüleri listelemenin yanı sıra, birçok yönetici PowerShell'i şu amaçlarla kullanır: sürücü güncellemelerini otomatikleştirin Windows Update ve ayrıca ses sürücülerini güncelleYaygın olarak kullanılan yöntemlerden biri, standart güncelleme cmdlet'lerini genişleten PSWindowsUpdate modülüdür.
Her zamanki akış geçiyor imzalı betiklerin yürütülmesini geçici olarak etkinleştirModülü kurun ve ardından sürücü güncellemelerini doğrudan Microsoft sunucularından talep edin.
Tipik bir komut seti şöyle olabilir:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
Install-Module PSWindowsUpdate
Import-Module PSWindowsUpdate
Get-WindowsUpdate
Get-WindowsUpdate -MicrosoftUpdate -Category Driver -Install -AutoReboot
Bu sıra, geçerli oturum için betik yürütmeyi etkinleştirir, PSWindowsUpdate modülünü yükler ve içe aktarır, Hangi güncellemelerin mevcut olduğunu kontrol edin. Ve son olarak Microsoft Update üzerinden "Sürücü" kategorisinden kurulumlarını talep ediyorsunuz, böylece gerektiğinde sistemin otomatik olarak yeniden başlatılması sağlanıyor.
Örneğin, Microsoft Update'ten algılanan tüm güncelleştirmeleri yükleyen ve herhangi bir müdahale olmadan bilgisayarı yeniden başlatan bir komut kullanarak kapsamı genişletebilirsiniz:
Get-WindowsUpdate -MicrosoftUpdate -Install -AutoReboot
Bu çalışma şekli özellikle şu durumlarda pratiktir: büyük takım parklarıSürücü sürümlerini tek tek ele almak yerine standartlaştırmanız gereken yer burasıdır. Ancak, bunu önceden hazırlanmış iyi bir sürücü envanteriyle birleştirmeniz ve kritik ortamlarda, tüm kuruluşa dağıtmadan önce bir pilot grupta test etmeniz her zaman tavsiye edilir.
Genel olarak bayt ve teknoloji dünyası hakkında tutkulu bir yazar. Bilgilerimi yazarak paylaşmayı seviyorum ve bu blogda da bunu yapacağım; size gadget'lar, yazılım, donanım, teknolojik trendler ve daha fazlasıyla ilgili en ilginç şeyleri göstereceğim. Amacım dijital dünyada basit ve eğlenceli bir şekilde gezinmenize yardımcı olmaktır.
