10.04.2026

Tek elemanlı diziler

Bir dizi (array) oluşturuyorum.

$tamliste = @()

Sonra bu dizinin içini dolduruyorum. Ama işin bir yerinde bu diziyi, bir kritere göre filtrelemek istiyorum.

$filtrelenmis = $tamliste | Where-Object { $_.Name -match $anahtarkelime }

Sonrasında filtrelenmiş $filtrelenmis üzerinde bir for döngüsü ile işlem yapmam gerek.

for ($i = 0; $i -lt $filtrelenmis.Count; $i++) {
    Write-Host "[$i] $($filtrelenmis[$i].Name)"
}

Ama öncesinde boş bir dizi dönüp dönmediğini denetliyorum. Boş bir dizi döndüyse bunu bildirmem gerek.

if ($filtrelenmis.Count -eq 0) {
    Write-Host "Bos liste dondu."
} else {
    Write-Host "Bulunan:`r`n------"
    for ($i = 0; $i -lt $filtrelenmis.Count; $i++) {
        Write-Host "[$i] $($filtrelenmis[$i].Name)"
    }
}

$filtrelenmis değişkeninin sadece 1 elemanlı olması durumunda $filterelenmis.Count'un 1 dönmesini bekleriz. Ama dizinin 1 elemanlı olması durumunda bu artık bir dizi olmuyor, sadece düz bir değişken oluyor. Bu sebeple de .Count tanımlı değil.

Bu durumu düzeltmek için filtreleme satırını

$filtrelenmis = @($tamliste | Where-Object { $_.Name -match $anahtarkelime })

şeklinde düzeltmek gerek.

8.04.2026

Bluetooth kulaklığın batarya seviyesi

Android'de olduğu gibi bluetooth kulaklığın batarya seviyesini görebilsek güzel olurdu. GNOME arayüzünde yok, bilemiyorum KDE veya diğer grafik arayüzlerde var mıdır. Ama terminalde görmek için önce

bluetoothctl

ile etkileşimli ortama girmek lazım. Sonra bu etkileşimi ortamda

devices

diyerek bağlı cihazları listelemek gerek. Burada istediğimiz cihazın MAC adresine benzeyen xx:xx:xx:xx:xx:xx formatındaki cihaz kimliğini kopyaladıktan sonra

info xx:xx:xx:xx:xx:xx

ile ayrıntılarını sorgulamak lazım. Burada en altta (hep böyle midir?)

Battery percentage: 0x47 (70)

gibi bir noktada batarya seviyemiz görülebilir. İlk yazan, tahmin edilebileceği gibi onaltılık sistemde 70'in karşılığı. Alışık olduğumuz onluk sistemde yüzde değerimiz 70.

4.04.2026

Linux terminalde basit matematik işlemleri

Powershell'de her türlü matematiksel işlem yapılırken bash veya diğer shell'lerde 4 işlem bile mümkün değil. Ama çözümü var: bc

bc yazıp giriş yaptığımızda etkileşimli bir ortam karşılıyor bizi. Çıkmak için quit yazmak gerek, exit işe yaramıyor. ctrl+c de işe yarar. Buraya girmeden basit bir şekilde sonucu öğrenmek için

echo '33*47' | bc

yazılabilir.

Trigonometrik fonksiyonlar gibi karışık işler için python kullanılabilir. Ama varsayılan shell'de math kütüphanesi gelmediği için önce import math ile kütüphaneyi eklemek gerek:

import math
math.sin(math.pi/2)

 

1.04.2026

HTML ayrıştırma

Invoke-WebRequest cmdlet'i ile HTML içinde istenen öğelerin hızlı ayrıştırması yapılabilir. Örneğin şu sayfada yapılmış bir örnekte github üzerindeki görsellerin indirilmesi için powershell kullanılmış. Hedef sayfamız 

$url = "https://github.com/PrateekKumarSingh/CheatSheets/tree/master/Powershell"

 ile belirtilmiş. Bu sayfanın içeriği Invoke-WebRequest ile $page değişkenine atanmış.

$page = Invoke-WebRequest -UseBasicParsing -Uri $url

Bu aşamadan sonra sayfadaki bütün bağlantılara $page.Links ile ulaşmak mümkün. Hatta bir miktar biçimlendirme ile

$page.Links | Where-Object title | Select-Object -Property title, href

gibi bir tablo oluşturulmuş. Daha önce duvar kağıdı indirme için şu örneği yapmıştım, yine Links kullanarak.

Daha karışık bir örnek için live.sysinternals.com/files sayfasında yer alan araçların bir listesini oluşturmak istediğimizi düşünelim. Yine $page.Links ile sayfadaki bağlantılara erişmek mümkün ama bir de sayfada yer alan ama bir şekilde Links veya diğer property'ler ile görüntülenemeyen araçların güncellenme tarihi almak istediğimizi varsayalım. Bunun için sayfanın ham (raw) HTML kaynağını bir HTMLFile nesnesine atarak içinde adım adım ilerlememiz gerek.

İlk iş bir HTMLFile nesnesi oluşturmak

    $htmObj = New-Object -ComObject "HTMLFile"

Daha sonra $page.Content verisini bu nesnenin içine alalım.

    $htmObj.IHTMLDocument2_write($list.Content)

Yukarıdaki satır bazı durumlarda (Office yüklü olmayan bilgisayarlar veya Powershell 6+ sürümlerde)

method invocation failed because [system.__comobject] does not contain a method named 'IHTMLDocument2_write'

hatası verebilir. Bu durumda IHTMLDocument2_write satırını aşağıdaki 2 satır ile değiştirmek gerekebilir.

    $bytes = [System.Text.Encoding]::Unicode.GetBytes($page.content)
    $htmObj.write($bytes)

try/catch bloğu ile iki yöntemin birleşimini sayfanın altına yazıyorum, burası daha fazla karışmasın. 

Sayfadaki tarih ve saat verisi 

     Saturday, March 21, 2026 11:18 AM

şeklinde olduğu için bu yapıyla eşleşebilecek bir regex oluşturalım.

$pattern = '(\w+,\s+\w+\s+\d+,\s+\d+\s+\d+:\d+\s+[AP]M)\s+(\d+)\s+(\S+)'

Sayfanın kaynak kodunda yer alan header bilgisi gibi işimizi yaramayacak verilerden kurtulmak için ilk tarih saat bilgisinin geçtiği konumu bulalım.

$indxStart = ($htmObj.body.outerText | sls -Pattern $pattern).Matches[0].Index

İlk kez tarih ve saat formatının geçtiği yer baz alacağımız başlangıç noktası olacak. Buradan sayfanın sonuna kadar olan yer ile ilgileniyoruz.

    $indxEnd = ($htmObj.body.outerText).Length
    $raw = $htmObj.body.outerText.Substring($indxStart, $indxEnd-$indxStart)

Sıra bu kalıba uyan verileri ayrıştırma adımına geldi. $pattern değişkeninin içinde 3 gruplandırma kullandım, parantezler içinde. Aşağıdaki Groups bölümleri (nesneleri, dizileri, neyse) buna göre oluşturuldu.

$results = [regex]::Matches($raw, $pattern) | ForEach-Object {
    [PSCustomObject]@{
        Date     = $_.Groups[1].Value.Trim()
        Size     = [int]$_.Groups[2].Value
        FileName = $_.Groups[3].Value
    }
}

live.sysinternals.com/files sayfasında bir değişiklik olana kadar bunun çalışacağını umuyorum.

    $results | Out-GridView

Sayfada Date, Size veya FileName alanlarına ait bir veri etiketi/başlık/alan adı bulunmuyor. Bunu en son ayrıştırma aşamasında yaptım. Bu bölümdeki her alan için $pattern değişkeni içindeki bölümlerle eşleşme şöyle:

DateGroups[1](\w+,\s+\w+\s+\d+,\s+\d+\s+\d+:\d+\s+[AP]M)
SizeGroups[2](\d+)
FileNameGroups[3]   
(\S+)

---

$htmObj = New-Object -ComObject "HTMLFile"
$page = iwr -useb "live.sysinternals.com/files"

try {
    # Bu yöntem genellikle MS Office yüklü sistemlerde ve Windows PowerShell'de çalışır
    $html.IHTMLDocument2_write($content)
}
catch {
    # Office yüklü değilse veya PowerShell Core kullanıyorsanız bu yöntem çalışır
    $bytes = [System.Text.Encoding]::Unicode.GetBytes($page.Content)
    $htmObj.write($bytes)
}

 

26.03.2026

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, 

7.03.2026

powershell muhtelif-3

Bir betiğin içinden mevcut klasörün yolunu tutan değişken

$PSScriptRoot

betiğin tam yolunu tutan değişken ise

$MyInvocation.MyCommand.Definition

Betiğin içinde çalıştığı powershell sürecinin kimlikğini görmek için (uzak oturumlarda bu, wsmprovhost'un süreç numarasını verir)

$PID

Son komut hatasız çalıştı mı sorusuna cevap (sorunun cevabı evetse True olur): 

$? 

Çalışan powershell süreci hakkında daha fazla bilgi:

[System.Diagnostics.Process]::GetCurrentProcess()

Mevcut bilgisayarın adını almak için (herhangi biri)

hostname
$env:Computername
[System.Environment]::MachineName
[System.Net.Dns]::GetHostName().Name

Oturum açmış kullanıcı adını almak için (herhangi biri)

whoami
$env:Username
[System.Environment]::UserName
[System.Security.Principal.WindowsIdentity]::GetCurrent().Name 

 IP adresini göster (çünkü Get-NetIPAddress çok yavaş)

gcim win32_networkadapterconfiguration -filter "ipenabled = 'True'"

 

6.03.2026

Uzaktaki bilgisayar üzerinde bir kısayol oluşturmak

Uzak bilgisayar üzerinde bir hedef dosyam var, D:\klasor\dosya.txt adında. Kullanıcı masaüstünde bu dosyaya bir kısayol oluşturmak istiyorum. Kullanıcı masaüstü de en genel haliyle C:\Users\kullanici\Desktop gibi bir yerde.

$hedefdosya = "D:\klasor\dosya.txt"
$kisayolkonumu = "C:\Users\kullanici\Desktop\dosya.lnk"

Kısayolu oluşturmak için WScript.Shell nesnesi oluşturacağım.

$WS1 = New-Object -ComObject WScript.Shell
$kisayol = $WS1.CreateShortcut($kisayolkonumu)
$kisayol.TargetPath = $hedefdosya
$kisayol.Save() 

---

https://powershellfaqs.com/create-a-shortcut-to-a-folder-using-powershell/ 

5.03.2026

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). 

4.03.2026

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

3.03.2026

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.

27.02.2026

Kablosuz erişim noktası bilgilerini bulmak (Linux)

Şuradaki işlemlerin eşdeğerlerini Linux'ta yapmak istiyorum. Olasılıklardan biri nmcli kullanmak. nmcli, network manager olarak bilinen çoğu linux dağıtımında kurulu gelen ağ bağlantılarını yönetmek için kullanılan sistemin komut satırı (ncurse) bileşeni.

Aşağıdaki komut, bilgisayardaki ağ arayüzlerinin durumlarını gösterir. Ethernet arayüzleri için kablonun takılı olup olmadığını, wifi için ise mevcut kablosuz bir ağa bağlı olup olmadıklarını gösterir.

nmcli dev status

Şu komut ise bilgisayarın daha önce bağlanmış olduğu kablosuz ağları gösterir. Bu, Windows'daki hatırlanan kablosuz ağ profillerinin karşılığıdır.

nmcli con show

Bilgisayardaki arayüzlerin listesini almak için

nmcli dev

ve hatta daha da ayrıntılı görebilmek için

nmcli dev show

kullanılabilir. Örnek bir çıktı şöyle olur:

GENERAL.DEVICE:              wlp4s0
GENERAL.TYPE:                wifi
GENERAL.HWADDR:              <mac-address>
GENERAL.MTU:                 1500

GENERAL.STATE:               100 (bağlandı)
GENERAL.CONNECTION:          <ssid>
GENERAL.CON-PATH:            /org/freedesktop/NetworkManager/ActiveConnection/2
IP4.ADDRESS[1]:              192.168.1.5/24
IP4.GATEWAY:                 192.168.1.100
IP4.ROUTE[1]:                dst = 192.168.1.0/24, nh = 0.0.0.0, mt = 600
IP4.ROUTE[2]:                dst = 0.0.0.0/0, nh = 192.168.1.1, mt = 600

IP4.DNS[1]:                  8.8.8.8
IP4.DNS[2]:                  1.1.1.1

IP6.ADDRESS[1]:              <ip6-address>
IP6.GATEWAY:                 --
IP6.ROUTE[1]:                dst = fe80::/64, nh = ::, mt = 1024

Arayüzlerden birini seçip sadece onunla ilgili ayrıntıları görebilmek için

nmcli dev show wlp4s0

Etrafımızdaki kablosuz ağların listesini görmek için

nmcli dev wifi

Bu komutun çıktısında asterisk karakteri "*" ile gösterilen satır, bizim bağlı olduğumuz ağdır. Bu satırın BSSID sütununda bağlı olduğumuz erişim noktasının MAC adresi benzeri kimliği yer alır.

 

25.02.2026

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 ssid="asdf" name="asdf"

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

 

24.02.2026

Windows Web Exprience Pack

Windows 11'de ekranın sol alt köşesinde gözüken hava durumu ve benzeri bilgileri gösteren araç, hiç kullanmadığım bir bileşen.

winget uninstall "Windows Web Experience pack"

kullanarak kaldırdım.

18.02.2026

Linux sunucuyu kim yeniden başlatmış veya kapatmış

Yetkili bir kullanıcı tarafından yeniden başlatılan sunucunun journalctl loglarında şöyle bir satır görünür:

Aug 19 08:38:16 bilgisayaradi systemd-logind[1235]: The system will reboot now!

Burada bilgisayaradi ile gözüken alan kullanıcı adı değil, bilgisayar adı.

Bu olay kaydı systemd-logind birimi tarafından oluşturulmuş. Bu birim tarafından oluşturulan diğer kayıtları da görmek için

journalctl -u systemd-logind

kullanılabilir. Faydalı diğer kayıtlar şunlar olabilir: 

Nov 13 04:44:48 bilgisayaradi systemd-logind[1009]: The system will power off now! 
Nov 13 04:44:48 bilgisayaradi systemd-logind[1009]: System is powering down. 
journalctl -g "Linux version"

Burada gözüken tarih ve saatten +/- birkaç 10 saniye etrafını kısıtlayarak yapılacak bir aramada aşağıdaki regex ile kullanıcı adına erişilebilir.

journalctl --since "Nov 13 04:44:00" --until "Nov 13 04:45:00" | grep -e "Session [[:digit:]] of User"
Nov 13 04:44:47 bilgisayaradi systemd[1]: Stopping session-2.scope - Session 2 of User metin... 
Nov 13 04:44:47 bilgisayaradi systemd[1]: Stopped session-2.scope - Session 2 of User metin.

 Ayrıca sunucumuzun yeniden başlama olaylarını listelemek için de

journalctl --list-boots

komutu kullanılabilir. Sentetik bir yöntem olarak, journalctl kayıtlarında ilk yer alan 

Aug 14 14:53:07 arsiv kernel: Linux version 6.8.0-71-generic (buildd@lcy02-amd64-053) (x86_64-linux-gnu-gcc-13 (Ubuntu 13.3.0-6ub

gibi bir ifadeyi de arayabilirdim:

journalctl -g " Linux version "

 

17.02.2026

Windows'da kablosuz ağlar

Şifresini girerek bağlandığımız kablosuz ağa ait şifreleri Windows hatırlar. Hatırlanan şifreleri ona sorup öğrenebiliriz.

Önce hangi kablosuz ağları hatırlıyor diye soralım.

netsh wlan show profile
Profiles on interface Wi-Fi:

...

User profiles
-------------
    All User Profile     : GalaxyAxx
    All User Profile     : MisafirAgi
    All User Profile     : P40

Bu örnekte bilgisayar 3 tane kablosuz ağı hatırladı. Her ağın ayrıntılarını, şifreyi gösterecek şekilde görmek için

netsh wlan show profile "GalaxyAxx" key=clear

kullanabiliriz. Yüksek ihtimalle bu bilgilerin arasında şifre de olur. Security settings başlığının altında Key Content bilgisini sadece göstermek için

netsh wlan show profile "GalaxyAxx" key=clear | find /i "key content" 

Key Content : CokGizliParola


10.02.2026

Youtube arama sonuçlarını tarihe göre sıralamak

Youtube'da bir süredir arama sonuçları yüklenme tarihine göre sıralanamıyor. Bunu önemseyenler için Automation Avenue kanalındaki şu videoda bunu yapmanın "gizli" yolu anlatılmış.

Arama kutusunda bir kelime yazıp enter'a bastığımızda arama sonuçlarını sıralamak için sağ üst köşedeki  "filtreler" butonu aracılığıyla sadece "Popülerlik" veya "Alaka Düzeyi"ne göre sıralayabiliyoruz.


Popülerliğe göre sıraladığımda adres satırının en sonuna

&sp=CAM%253D

gibi bir parametre ekleniyor, alaka düzeyine göre sıraladığımda ise

&sp=CAASAA%253D%253D

gibi bir ifade. Bahsettiğim video, tarihe göre sıralamak için burayı elle düzelterek sadece

&sp=CAI

yapmayı öneriyor. Sondaki %253D  Base64 olarak encode edilmiş eşittir '=' karakteri. Bunu yazmayabilirim. Ama enter'a bastıktan sonra Youtube bunu otomatik ekleyecek.