windows etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
windows etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

2026-06-15

Klavye vuruşları göndermek

Powershell ile bir pencereye klavye vuruşları göndermek mümkün. Bunu bir animasyon ile yapmak istedim. 3 not defteri süreci oluşturup, her birinin içine birer cümle ekleyip, sonra da bunları kapatmak istiyorum.

Açılan bir not defteri penceresinin içine bir kelime yazmak için

[System.Windows.Forms.SendKeys]::SendWait()

 kullanmam gerek. Ama bunu kullanmak için önce

Add-Type -AssemblyName System.Windows.Forms

eklemeliyim. Kapatırken de bir not defteri sürecini diğerinden ayırt etmek için pencerenin başlığına göre ayırt etmek için

[Microsoft.VisualBasic.Interaction]::AppActivate("Not Defteri")

gibi bir şey kullanmak istiyorum. Kapatırken Alt+F4 komutunun karşılığını

[System.Windows.Forms.SendKeys]::SendWait("%{F4}")

 ile göndermek, bu sorunun cevabını "Hayır" ile cevaplamak için "n" kısayolunu da

[System.Windows.Forms.SendKeys]::SendWait("n")

ile göndermek istiyorum. Her not defteri penceresinin içeriği olacak kelimeleri de aşağıdaki gibi bir değişkene koydum.

$kelimeler = "Bugun","gunlerden","pazartesi"

Hepsini tek bir betiğe koyunca:

Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName Microsoft.VisualBasic

$kelimeler = "Bugun","gunlerden","pazartesi"

$kelimeler | % {
    start notepad
    sleep -Milliseconds 500
    [System.Windows.Forms.SendKeys]::SendWait($_)
}

sleep -Milliseconds 500

try {
    $kelimeler | % {
        [Microsoft.VisualBasic.Interaction]::AppActivate("$_, Not Defteri")
        [System.Windows.Forms.SendKeys]::SendWait("%{F4}")
        sleep -Milliseconds 500
        [System.Windows.Forms.SendKeys]::SendWait("n")
        sleep -Milliseconds 500
    }
}
finally {
    ps notepad -ea silent | kill -force -ea silent
}

Kapatmak için pencere başlığına göre Alt+F4 göndermek istedim, ama Türkçe yerelleştirme dışında herhangi bir durumda AppActivate çalışmayacaktır. Bu durum için try - finally ile bütün not defteri süreçlerini sonlandırdım.

2026-06-02

EFI disk bölümüne sürücü harfi ataması yapmak

Şu konuyla ilgilenirken alternatif yöntemlere denk geldim, çözümün şıklığı hoşuma gitti. Öncelikle hangi disk bölümünün EFI bölümü olduğunu bulmak için

$EFIbolumu = gcim win32_volume | where SystemVolume -eq $true

Bulduğumuzdan emin olmak istersek

$EFIbolumu | ft DriveLetter, @{N="SizeMB";E={[int]($_.Capacity/1MB)}},
    @{N="FreeMB";E={[int]($_.FreeSpace/1MB)}}, 
    Label, SystemVolume, FileSystem, PageFilePresent, BootVolume

Bunun sonucunda benim durumumda şöyle bir çıktı verdi:

DriveLetter SizeMB FreeMB Label SystemVolume FileSystem PageFilePresent BootVolume
----------- ------ ------ ----- ------------ ---------- --------------- ----------
                96     45               True FAT32                False      False

EFI sürücüleri için SystemVolume = True, C: sürücüsü gibi önyükleme bölümleri için ise BootVolume = True olur. Ek ayırt edici olarak bir de PageFilePresent'i kadraja aldım, emin olmak için. Genellikle EFI bölümleri 100 MB kadar ve FAT32 yapıda olurlar.

Son aşamada Set-CimInstance alias'ı scim'i kullanıyoruz.

$EFIbolumu | where SystemVolume -eq $true | scim -Property @{DriveLetter='E:'} 

Benzer şekilde birim etiketini değiştirmek için

$EFIbolumu | where SystemVolume -eq $true | scim -Property @{Caption='EFI-part'} 

Harf atamasını geri almak için yöntem aynı:

mountvol E: /d 

---

https://devblogs.microsoft.com/powershell-community/changing-drive-letters-and-labels-via-powershell/ 

2026-05-21

bootmgfw.efi dosyası eski sertifika ile imzalanmış

Windows altında güvenli önyükleme sertifikaları indirildi ve firmware'e eklendi. Güvenli önyükleme de etkin. Windows Güvenliği'nde güvenli önyükleme için "Başka sertifika değişikliği gerekmiyor" mesajı da görüntüleniyor. Ama EFI partition'ında bootmgfw.efi dosyasını imzalayan sertifika hala 2011 sertifikası gözüküyor.

Bunu görmek için normalde bir harf ataması olmayan EFI disk bölümü için bir harf ataması yapmam lazım. Grafik arayüz var, ama orası heyecanlı değil. Hedefimiz, birçok bilgisayarda C: sürücüsünden hemen önce oluşturulan ~100 MB boyutunda olan FAT32 dosya sistemine sahip bir disk bölümü. Bu bölüme benim bilgisayarımda aşağıdaki gibi ulaştım ve E harfini atadım.

Get-Disk -Number 0 | Get-Partition -PartitionNumber 1 | 
    Set-Partition -NewDriveLetter E

Bu işlemi ve bundan sonraki işlemleri yükseltilmiş ayrıcalıklarla yapmam gerek.

(Get-AuthenticodeSignature E:\EFI\Microsoft\Boot\bootmgfw.efi).SignerCertificate | 
    Select-Object NotAfter, Issuer

Sanıyorum bir ara bu dosya yeni sertifika(lar) ile imzalanır.

İşlem bittikten sonra E sürücüsünü kaldırmak gerek.

Get-Volume -DriveLetter E | Get-Partition | 
    Remove-PartitionAccessPath -AccessPath "E`:\"

Bu disk bölümü harfini kaldırmak için alternatif yöntemler

mountvol E: /d

veya

diskpart > list volume > select volume # > remove letter=E

komut silsilesini kullanmak gerek.

2026-05-19

Güvenli önyükleme sertifikaları

Bir süredir hayatımızda güvenli önyükleme (secure boot) diye bir şey var, rootkit'lerin veya benzeri zararlı yazılımların bilgisayarın ilk açılış aşamasında devreye girmesini engellemek için. Bu sistem, etkinleştirildikten sonra çalışacak olan önyükleme kodunun yetkilendirilmiş olup olmadığını anlamak için sertifikalar kullanılıyor. İşin içinde sertifika varsa bir de geçerlilik süresi vardır. Ve bu sene de, 2011'de kullanılmaya başlayan (nedendir bilinmez) Microsoft sertifikalarının son senesi. Güncellenmeleri lazım.

Süreç prüzsüz işliyor. Güvenli önyükleme firmware'de etkinleştirilmişse (aksi takdirde 1796 Microsoft-Windows-TPM-WMI olay kaydedilir) işletim sistemi, yeni sertifikaları kurup güvenliği sağlıyor. Süreci kontrol etmek isteyenler için Ayarlar>Gizlilik ve Güvenlik>Cihaz Güvenliği adımında "Güvenli Önyükleme" bölümündeki mesaja bakılabilir. Eğer aşağıdaki gibi bir durumdaysa herşey olması gerektiği gibi işlemiş demektir. Kurulum üst üste birkaç kez yeniden başlatma istiyor.

 

İşleri powershell ile kontrol etmek için Get-SecureBootUEFI cmdlet'i kullanılabilir. Bu cmdlet'in -Name parametresine DB ve KEK (depoları) verilerek istenen sertifikaların sistemde mevcut olup olmadığı kontrol edilebilir. Olması gereken sertifika isimleri, depo ismi ve son kullanma tarihleri şöyle:

Sertfika adıDepo adıSon kullanma tarihi
Windows UEFI CA 2023DB2035-06-13 22:08:29Z
Microsoft Option ROM UEFI CA 2023DB2038-10-26 22:12:20Z
Microsoft UEFI CA 2023DB2038-06-13 22:31:47Z
Microsoft Corporation KEK 2K CA 2023KEK2038-03-02 23:31:35Z

Tüm sertifikaların isimlerinde 2023 geçmesi sebebiyle bu kontrolü aşağıdaki gibi otomatikleştirebilirim.

$kek = Get-SecureBootUEFI -Name KEK -Decoded
$db  = Get-SecureBootUEFI -Name db  -Decoded

$arr1 ="Windows UEFI CA 2023","Microsoft UEFI CA 2023","Microsoft Option ROM UEFI CA 2023"

$res1 = $db  | Where-Object {$_.Subject -match "2023"} |
        Select-Object @{N="Subj";E={$_.Subject.split(",")[0].replace("CN=","")}},
                        @{N="Store";E={"DB"}}, ValidFrom, ValidTo,
                        @{N="Stat";E={if ($_.Subject.split(",")[0].replace("CN=","") -in $arr1) {"OK"} else {"NOT OK"}}}

$res1 += $kek  | Where-Object {$_.Subject -match "2023"} |
        Select-Object @{N="Subj";E={$_.Subject.split(",")[0].replace("CN=","")}},
                        @{N="Store";E={"KEK"}}, ValidFrom, ValidTo,
                        @{N="Stat";E={if ($_.Subject.split(",")[0].replace("CN=","") -eq "Microsoft Corporation KEK 2K CA 2023") {"OK"} else {"NOT OK"}}}
$res1 | Format-Table -AutoSize -Wrap

Sertifikaların kurulması sırasında ve sonrasında sistem olay günlüğüne Microsoft-Windows-TPM-WMI sağlayıcı ismi altında aşağıdaki olaylar kaydediliyor.

IDSağlayıcıSeviyeMesaj
1800Microsoft-Windows-TPM-WMIUyarıA reboot is required before installing the Secure Boot update.
Reason: Boot Manager (2023)
1801Microsoft-Windows-TPM-WMIHataUpdated Secured Boot certificates are available on this device but
have not yet been applied to the firmware.
1043Microsoft-Windows-TPM-WMIBilgiSecure Boot KEK update applied successfully
1045Microsoft-Windows-TPM-WMIBilgi

Secure Boot DB update to install Microsoft UEFI CA 2023
certificate applied successfully

1044Microsoft-Windows-TPM-WMIBilgiSecure Boot DB update to install Microsoft Option ROM
UEFI CA 2023 certificate applied successfully
1036Microsoft-Windows-TPM-WMIBilgiSecure Boot Db update applied successfully
1808Microsoft-Windows-TPM-WMIBilgiThis device has updated Secure Boot CA/keys.

En son 1808 ID'li olay, sistem nihai seviyeye ulaştıktan sonra kaydedildi. 

Sertifikalar geldi ama firmware'e erişim reddedildiyse şu hata mesajı kaydedilir:

1796Microsoft-Windows-TPM-WMIHataThe Secure Boot update failed to update KEK 2023 with error Invalid access to memory location.

Bu sertifikaların olması sistemin korunduğu anlamına gelmiyor, bir veya daha fazla yeniden başlatma bekliyor olabilir. Nihai durum için hem firmware'de güvenli önyükleme açık olmalı hem de cihaz güvenliğinde yukarıda bahsettiğim mesaj görüntülenmeli. Hepsini tek seferde gösterebilecek bir registry konumundan veri okuyacak örnek şu adreste verilmiş:

(Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\Servicing\" -Name "UEFICA2023Status").UEFICA2023Status

Genel olarak bir KB ile başlayan güncelleştirme kodu bu sertifikaların yüklenmesi ile ilişkilendirilmemiş ama ben KB5089549 ve KB5092762 güncelleştirmelerini buldum, tam yüklenme sonrasında.

Linux tarafında mokutil ile sertifikaların varlığı kontrol edilebilir:

sudo mokutil --db | grep -B 1 "2023"
sudo mokutil --kek | grep -B 1 "2023"

Bu komutun sonucu ilk verdiğim tablo ile örtüşmeli. Güncel sertifikalar yoksa fwupdmgr ile firmware güncellemesi denetlenebilir.

sudo fwupdmgr refresh
sudo fwupdmgr get-updates
sudo fwupdmgr update

Ama sertifikaların varlığı yetmiyor, yeni sertifika ile imzalanmış bir shimx64.efi dosyasına ihtiyaç var. Bu dosyanın imzandığı sertifikayı görmek için pesign aracı kullanılabilir (varsayılan olarak kurulu değildir, kurmak için aynı isimli paket kurulmalı).

sudo pesign -S -i /boot/efi/EFI/fedora/shimx64.efi

Benim makinemde bu şöyle bir sonuç döndü:

---------------------------------------------
certificate address is 0x7f321a9fd6d0
Content was not encrypted.
Content is detached; signature cannot be verified.
The signer's common name is Microsoft Windows UEFI Driver Publisher
No signer email address.
No signing time included.
There were certs or crls included.
---------------------------------------------

Bu da henüz imzalı bir shim olmadığını gösteriyor. Önümüzdeki günlerde sanıyorum ki güncel sürüm gelir.

 ---

https://woshub.com/updating-uefi-secure-boot-certificates-windows-faq/#:~:text=In%20this%20article%2C%20we%E2%80%99ll%20show%20you%20how%20to,CA%202023%20certificate%2C%20without%20waiting%20for%20automatic%20installation.

https://support.microsoft.com/en-us/topic/windows-secure-boot-certificate-expiration-and-ca-updates-7ff40d33-95dc-4c3c-8725-a9b95457578e

https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/windows-secure-boot-key-creation-and-management-guidance?view=windows-11#14-signature-databases-db-and-dbx

 

2026-03-26

Powershell'in sayıları

Powershell, .Net altyapısı üzerine kurulu olduğu için onun veri tiplerini kullanıyor. Herhangi bir veri tipini kullanarak bir değişkende depolanabilecek en küçük ve en büyük sayıyı bulmak için ::MinValue ve ::MaxValue eklemek yeterli. Örneğin 32 bitlik bir tam sayının en küçük ve en büyük değerlerini bulmak için

> [int]::MinValue
-2147483648

> [int]::MaxValue
2147483647

İşaretsiz bir tam sayı için

> [uint32]::MinValue
0

> [uint]::MaxValue
4294967295

İşaretsiz tam sayıların en küçük değerini sorgulamak gereksiz olduğu için 64 bitlik bir işaretsiz tam sayının en büyük değerini sorgulayalım.

> [uint64]::MaxValue 
18446744073709551615

Benzer bir şekilde float ve double için de en küçük ve büyük değerler

> [float]::MaxValue 
> [double]::MaxValue

float ve double veri tiplerinin hassasiyetleri için ::Epsilon kullanılabilir. Bu veri tipleri işaretli (signed) olduğu için en küçük değerin mutlak değeri ile en büyük değer arasında çok küçük farklar var. Ama mutlak değeri en küçük (yani sıfıra en yakın, bir bütünün en küçük parçası) sayıyı bulmaktan bahsediyorum.

> [float]::Epsilon
1,401298E-45

> [double]::Epsilon
4,94065645841247E-324

long denen veri tipi aslında işaretli bir int64, 

2026-03-05

Uzak bilgisayardaki nonpaged pool bellek miktarına ulaşmak

Uzak bir bilgisayardaki  "disk belleği olmayan havuz" değerine ulaşmak istedim. Bunun için iki seçenek var. Performans sayaçları (performance counters) ve WMI (ya da yeni adıyla CIM) sorguları.

Performans sayaçları konusu biraz karışık. Dile göre farklılık gösterebiliyor. Örnek olarak uzak bilgisayar İngilizce yerelleştirmeye sahipse bu sayaç değerini okumak için.

(Get-Counter -Computername uzakpc "\Memory\Pool Nonpaged Bytes").CounterSamples.CookedValue

yeterli olurken, Türkçe bir bilgisayarda 

(Get-Counter -Computername uzakpc "\Bellek\disk belleği olmayan havuz bayt sayısı").CounterSamples.CookedValue

çalışmadı. Onun yerine terminalden

Invoke-Command -Computername uzakpc {Get-Counter "\Bellek\disk belleği olmayan havuz bayt sayısı").CounterSamples.CookedValue}

ile sonuca ulaştım. Ancak bu satırı kopyalayıp bir metin dosyasına kaydedip ps1 uzantılı bir betik dosyası oluşturduğumda aldığım hata

Internal performance counter API call failed. Error: c0000bb9.
    + CategoryInfo          : InvalidResult: (:) [Get-Counter], Exception
    + FullyQualifiedErrorId : CounterApiError,Microsoft.PowerShell.Commands.GetCounterCommand
    + PSComputerName        : uzakpc 

oldu. Bir sorun var. O da dosyayı UTF-8 olarak kaydetmek. Kodlamayı ANSI olarak değiştirince sorun çözüldü. Şu sayfada powershell'in ps1 dosyalarında UTF-8 kodlamasını da kabul ettiği, sorunun sadece bazı karakterlerin kopyala yapıştır sırasında yanlış yerleştirildiğinden bahsedilmiş. Bu konu henüz incelenmedi.

İkinci yöntem olarak CIM sorgusu ile de ilerleyebilirdim.

(Get-CIMInstance -Computername uzakpc Win32_PerfFormattedData_PerfOS_Memory).PoolNonpagedBytes

Ama ilginç bir şekilde ilk kullanımda bu değeri dönmesi uzun sürüyor (+1 dakika). 

2026-03-04

poolmon, bellek sızıntısı ve WDK

Görev yöneticisinin bellek sekmesinde, sağ alt köşede yer alan bir "disk belleği olmayan havuz" (non paged pool) bölümü var. Bu bölüm, kullanıcı bellek harcamalarının dışında sürücü ve sistem bileşenlerinin kullandığı ve hiçbir zaman diske (sanal bellek) yazılmayacak miktarı gösterir.

Ekran görüntüleri, benim yaşadığım sorunlu bilgisayara ait değil.


Bu değerin normal bir bilgisayarda 300-400 MB civarında olması beklenir. Ama bir bilgisayarda bu 1,6 GB'ı bulmuştu. Bu bir bellek sızıntısı (memory leak) mı? Bir sürücü işletim sisteminden sürekli bellek talep edip, bunları hiçbir zaman boşaltmazsa bellek sızıntısı olur. İncelemek gerek.

Bu tür durumlarda poolmon kullanılabilir. Bu araç, sürücülerin diske yazılmayan bellek kullanımlarını inceler. Her alanın doğrudan hangi bileşen/süreç tarafından kullanıldığını görmek mümkün değil, ama talep edilen alanlar için bir etiket kullanılır. Bu etiketten şişkin alanın hangi bileşen/süreç ile ilgili olduğu bulunabilir. Poolmon'u indirmek için Windows Driver Kit'i indirmek gerek. Bu kit, başka bileşenlerle de gelir. wdksetup.exe'yi çalıştırdıktan sonra buna göre seçenekleri işaretlemek gerek.

WDK ile birlikte poolmon'u kurduktan sonra çalıştırınca (komut satırından) aşağıdaki gibi bir çıktı verir.

Sütunları inceleyelim.

Tag: Etiket. Alanın hangi sürücü ile ilgili olduğunun anlaşılmasını kolaylaştırmak için.

Type: Rezervasyon tipi. Paged (diske yazılabilecek şekilde rezerve edilen bellek alanı) veya Nonp (diske yazılmayacak şekilde rezerver edilen bellek alanı). Benim durumum için önemli olan alanlar Nonp olanlar.

Allocs: Bellek talep sayısı. Kaç kez rezervasyon yapıldığını gösteriyor.

Frees: Kaç kez rezerve edilen alanların serbest bıraklıdığını (işletim sistemine iade) gösteriyor.

Diff: Allocs ve Frees arasındaki fark; yani rezerve edilip henüz serbest bırakılmamış alan sayısı. Dikkat, miktar değil.

Bytes: İlgili etiketin toplam aktif kullandığı diske yazılmayan bellek alanı.

Per Alloc: Yapılan işlemlerin ortalaması.

Benim durumum için "b"ye basarak Bytes alanına göre sıralamak faydalı oldu. Bazı klavye kısayolları:

p : Verileri type alanına göre süz (sadece Paged, Nonp veya ikisini de içerecek şekilde)
e : Pencerenin altında toplamları göster/gizle (varsayılan kapalı)
a : Allocs alanına göre sırala
f : Frees alanına göre sırala
d : Diffs alanına göre sırala
m : Per Allocs alanına göre sırala
b : Bytes alanına göre sırala

Peki bunu gördük, ne yapabiliriz? Elimizden çok fazla şey gelmiyor. Yapılabilecek şeyler, görüntülenen etiketin hangi sürücüye ait olduğunu bulmak, sonrasında bu sürücüyü güncellemek ve güncel sürücünün bellek sızıntısı yapmayacağını ummak.

Benim durumumda görüntülenen etiket, ismc'ydi. Bu da Intel Rapid Store Technology (RST) ile ilgiliydi. Sorun çözme adımları olarak önce ilgili event tracing'i bilgisayar açıldıktan sonra devre dışı bıraktım.

logman stop IntelRST -ets

ETW içindeki veri kaynaklarını inceledim.

logman query -ets

Intel ile ilgili sürücüleri listeledim

driverquery /v | findstr /i

Hiç biri faydalı olmadı. Aynı sorundan şikayetçi kaç kişi var acaba?

İçinde ismc etiketi geçen sürücüleri aramak için şöyle bir komut önerilmiş.

findstr /m /s /l ismc *.sys

Bu aslında metin dosyalarının içinde ismc anahtar kelimesini arayan bir komut. Bunun powershell eşdeğerini denemek istedim. 

dir *.sys -rec -ea silent | sls ismc | select path

Konuyu biraz saptırdım ama yukarıdaki eşdeğer, asıl komuttan daha fazla sayıda çıktı üretti. Bunun sebebi findstr'nin unicode desteğinin olmaması. sls (Select-String) unicode desteğine sahip olduğu için daha fazla dosya bulur.

Daha ileri seviye bir teknik için, superuser.com üzerinde 2015'te sorulan şu soruya magicandre1981 tarafından verilen cevap incelenebilir.

---

https://woshub.com/huge-memory-usage-non-paged-pool-windows/
https://community.intel.com/t5/Rapid-Storage-Technology/Non-Paged-pool-memory-usage-too-high/m-p/1243440
https://www.tenforums.com/performance-maintenance/101582-very-high-ram-usage-all-time-w10.html
https://community.intel.com/t5/Rapid-Storage-Technology/Non-Paged-pool-unusually-high-ismc-non-paged-pool/td-p/1288935
https://www.tenforums.com/performance-maintenance/168382-high-ram-usage-non-paged-pool-size.html

2026-03-03

Ağ kabuk komutlarının konum erişimi istemesi

Windows'da netsh komutunu kullanarak yapılan ağ taraması sırasında şöyle bir mesaj çıkıyor.

Interface name : Wi-Fi
Network shell commands need location permission to access WLAN information. Turn on Location services on the Location page in Privacy & security settings.

Here is the URI for the Location page in the Settings app:
ms-settings:privacy-location
To open the Location page in the Settings app, hold down the Ctrl key and select the link, or run the following command:
start ms-settings:privacy-location

Or, to open the Location page from the Run dialog box, press Windows logo key + R, and then copy and paste the URI above.

The requested operation requires elevation (Run as administrator).

Varsayılan olarak uygulamaların benim kontolüm dışında konum bilgime erişmesine ve paylaşmasına izin vermiyorum. Bu sebeple yukarıdaki gibi bir mesaj bana ilginç gelirdi; alt tarafı bir wifi taraması yapmak istiyorum, program neden benim konum bilgilerime erişmek istiyor diye düşünürdüm.

Bu aslında Android üzerindeki wifi tarama araçlarında da oluyordu. Bu duruma bakış açım da sanki "işletim sistemi (Windows veya Android) benim yapmak istediğim kablosuz tarama işlemlerinde konum bilgimi okuyup paylaşacakşeklinde olurdu. Yanlış bir bakış açısıymış.

Burada aslında şu oluyor; kullanıcı veya bir program ağ kabuk komutları aracılığı ile tarama yaparsa bu aslında dolaylı olarak konum bilgime de sahip olabilecekleri anlamına gelir. Bu sebeple bu gibi işlemlerin bir yetkilendirmeye tabi olmasını istemişler. Yani aslında yukarıdaki gibi bir mesaj bana sadece "bu işlemi yapmaya yetkin yok" diyor. Yapmak için verilmesi gereken yetki konum erişimi yetkisi.

2026-02-25

Kablosuz erişim noktası bilgilerini bulmak (Windows)

Bulunduğumuz yerdeki kablosuz ağların listesini komut satırından görmek için

netsh wlan show networks

SSHD 1 : <ağ-1>
    Network type   : Infrastructure
    Authentication : WPA2-Personal
    Encryption     : CCMP  

Bu ağlardan birine bağlanmak için

netsh wlan connect "wifi-adi"

Veya bağlı olan ağ ile bağlantıyı kesmek için

netsh wlan disconnect

Bilgisayarımdaki kablosuz bağlantı arayüzü (bir ağa bağlıysa o ağ) ile ilgili bilgileri görüntülemek için 

netsh wlan show interfaces

Name : Wi-Fi
Description : Intel(R) Wi-Fi 6E AX211 160MHz
GUID : <guid>
Interface type : Primary
State : connected
SSID : <ağ-adı>
AP BSSID : <MAC-adresi>
Band : 5 GHz
Connected Akm-cipher : [ akm =..., cipher = ... ]
Network type : Infrastructure
Radio type : 802.11ac
Authenticate : WPA2-Personal
Cipher : CCMP
Connection mode : Auto Connect
Receive rate (Mbps) : 866.7
Transmit rate (Mbps) : 650
Signal : 92%

Rssi : -45
Profile : <profil-adı>
    Qos MSCS Configured : 0
    Qos Map Configured : 0
    QosMap Allowed by Policy : 0

Kablosuz arayüzün yeteneklerini görüntülemek için

netsh wlan show wirelesscapabilities

Firmware Version : D4.05
Network monitor mode : Not supported
Promiscuous Mode : Not Supported
MAC Randomization : Supported
WPA3 SUITE-B Authentication : Supported 

Çok uzun bir çıktısı var, sadece belli başlı satırları aldım. Sürücümüzün yeteneklerini görmek için

netsh wlan show drivers

Interface name: Wi-Fi

    Driver                    : Intel(R) Wi-Fi 6 AX201 160MHz
    Vendor                    : Intel Corporation
    Provider                  : Intel
    Date                      : 21.07.2025
    Version                   : 23.160.0.4
    INF file                  : oem279.inf
    Type                      : Native Wi-Fi Driver
   
Radio types supported     : 802.11b 802.11g 802.11n 802.11a 802.11ac 802.11ax
    FIPS 140 mode supported   : Yes
    802.11w Management Frame Protection supported : Yes
    Hosted network supported  : No
    Authentication and cipher supported in infrastructure mode:
                                Open             None
                                Open             WEP-40bit
                                Open             WEP-104bit
                                Open             WEP
                                WPA-Enterprise   TKIP
                                WPA-Enterprise   CCMP
                                WPA-Personal     TKIP
                                WPA-Personal     CCMP
                                WPA2-Enterprise  TKIP
                                WPA2-Enterprise  CCMP
                                WPA2-Personal    TKIP
                                WPA2-Personal    CCMP
                                Open             Vendor defined
                                WPA3-Personal    CCMP
                                Vendor defined   Vendor defined
                                WPA3-Enterprise 192 Bits GCMP-256
                                OWE              CCMP
                                WPA3-Enterprise  CCMP

    Number of supported bands : 2
                                2.4 GHz [ 0 MHz - 0 MHz]
                                5 GHz [ 0 MHz - 0 MHz]

    IHV service present       : Yes
    IHV adapter OUI           : [00 00 00], type: [00]
    IHV extensibility DLL path: C:\WINDOWS\system32\somefile.dll
    IHV UI extensibility ClSID: <clsid>
    IHV diagnostics CLSID     : <clsid>
    Wireless Display Supported: Yes (Graphics Driver: Yes, Wi-Fi Driver: Yes)

Var olan bir profili dosyaya yedeklemek için

netsh wlan export profile name="BWN" key=clear filename=C:\asdf\x.xml

Dosyaya yedeklediğimiz bilgilerden bir profil oluşturmak için

netsh wlan add profile filename=C:\asdf\x.xml #user=all

Benzer şekilde bir ağa ilk defa bağlanıyorsak ve aşağıdaki hata mesajını görüyorsak

There is no profile "kablosuz-adi" assigned to the specified interface

önce profil oluşturmamız gerekiyor demektir. Profili bir xml dosyası yardımıyla oluşturalım. Tercih ettiğimiz bir editöre aşağıdaki satırları yazalım ve profil.xml olarak kaydedelim.

<?xml version="1.0"?>
<WLANProfile xmlns="http://www.microsoft.com/networking/WLAN/profile/v1">
    <name>wifi-adi</name>
    <SSIDConfig>
        <SSID>
            <name>wifi-adi<name>
        </SSID>
    </SSIDConfig>
    <connectionType>ESS</connectionType>
    <connectionMode>manual</connectionMode>
    <MSM>
        <security>
            <authEncryption>
                <authentication>WPA2PSK</authentication>
                <encryption>AES</encryption>
                <useOneX>false</useOneX>
            </authEncryption>
            <sharedKey>
                <keyType>passPhrase</keyType>
                <protected>false</protected>
                <keyMaterial>wifi-sifresi</keyMaterial>
            </sharedKey>
        </security>
    </MSM>
</WLANProfile>

Authentication ve encryption bilgilerinin ve <keyMaterial> alanındaki şifrenin doğru olduğunu kabul ederek bu dosyayı kaydettikten sonra ilk iş bir profile oluşturmak.

netsh wlan add profile filename=profil.xml interface=Wi-Fi 

Bu adımdan sonra bu ağa bağlanabiliriz.

netsh wlan connect "wifi-adi"