Windows Etkinleştirmede Yeni Dönem: slmgr.vbs’den PowerShell’e Geçiş
Windows sistem yöneticilerinin yıllardır etkinleştirme, ürün anahtarı yönetimi ve lisans durumu kontrolü için kullandığı slmgr.vbs, yerini aşamalı olarak PowerShell tabanlı araçlara bırakmaya hazırlanıyor. VBScript’in Windows’tan kaldırılması süreci, bu betiğe bağlı otomasyonların da gözden geçirilmesini gerektiriyor.
Microsoft’un OSLicense PowerShell modülü, Windows lisans bilgilerini sorgulamak ve etkinleştirme işlemlerini yönetmek için yeni komutlar sunuyor. Modülün en belirgin avantajı, metin çıktısını ayrıştırmak yerine PowerShell nesneleriyle çalışmayı mümkün kılması. Bu yaklaşım, özellikle çok sayıda bilgisayarın yönetildiği kurumsal ortamlarda raporlama ve hata kontrolünü kolaylaştırıyor.
VBScript’in kullanım dışı bırakılması, slmgr.vbs’nin bütün Windows sürümlerinde hemen çalışmayı durdurduğu anlamına gelmiyor. Ancak bu betiğin çalışması VBScript motoruna bağlı olduğundan, geçiş hazırlıkları sırasında mevcut bağımlılıkların belirlenmesi gerekiyor. İşletim sistemi dağıtım betikleri, zamanlanmış görevler ve merkezi yönetim araçlarında kullanılan etkinleştirme komutları bu kapsamda değerlendirilmeli.
OSLicense desteğinde işletim sistemi ve güncelleme seviyesi belirleyici. Microsoft’un komut belgelerinde Windows 11 için Eylül 2026 güvenlik güncellemesi KB5124008, Windows Server tarafında ise vNext Preview Build 29651 belirtiliyor. Bu nedenle yeni komutların her Windows veya Windows Server kurulumunda hazır bulunduğu varsayılmamalı.
Hedef bilgisayarda modülün bulunup bulunmadığı, Windows PowerShell üzerinden aşağıdaki komutla kontrol edilebilir:
Get-Module -Name 'OSLicense*' -ListAvailable
Sonuç alınamıyorsa önce işletim sistemi sürümü ve desteklenen güncelleme seviyesi incelenmeli. Microsoft’un modül belgesinde Windows PowerShell 5.1 gereksinimi de belirtiliyor.
Yeni modülle lisans bilgilerini görüntülemek için şu komut kullanılabiliyor:
Get-OSLicenseInfo
Raporlamada yalnızca ihtiyaç duyulan alanların seçilmesi de mümkün:
Get-OSLicenseInfo |
Select-Object Name, LicenseStatus, PartialProductKey,
GracePeriodRemaining, EvaluationEndDate
Bu yapı sayesinde ürün adı, lisans durumu ve süre bilgileri doğrudan işlenebiliyor. Ancak etkinleştirme durumu değerlendirilirken lisans türü dikkate alınmalı; yalnızca kalan süre veya değerlendirme bitiş tarihi üzerinden bütün sistemler için ortak bir sonuç çıkarılmamalı.
Etkinleştirme ve ürün anahtarı işlemleri ise Invoke-OSLicense komutuyla gerçekleştiriliyor. Örneğin etkinleştirme başlatmak için aşağıdaki komut kullanılabilir:
Invoke-OSLicense -ActivateOnline
Ürün anahtarı yüklemek için anahtarın parametre olarak verilmesi gerekiyor:
Invoke-OSLicense -InstallProductKey 'XXXXX-XXXXX-XXXXX-XXXXX-XXXXX'
Buradaki örnek değer, kuruma ait geçerli ürün anahtarıyla değiştirilmeli. Lisans durumunu değiştiren işlemler yönetici yetkileriyle çalıştırılmalı. Komut ayrıca belirli bir lisans ürününün hedeflenmesi için ActivationID parametresini destekliyor.
Otomasyon açısından önemli bir diğer yenilik, işlem sonucunun yapılandırılmış alanlarla döndürülmesi. Invoke-OSLicense çıktısındaki Success alanı işlemin başarılı olup olmadığını gösterirken, yakalanan hatalarda ErrorCode ve ErrorMessage alanları kullanılabiliyor:
$result = Invoke-OSLicense -ActivateOnline
if ($result.Success) {
Write-Output 'Etkinleştirme işlemi başarılı.'
}
else {
Write-Warning (
'Etkinleştirme başarısız: {0} — Hata kodu: {1}' -f
$result.ErrorMessage, $result.ErrorCode
)
}
Bu özellik, işlem sonucunu metindeki belirli kelimeleri arayarak tespit eden betiklerin sadeleştirilmesini sağlıyor. Bununla birlikte, sorgulama komutları ile işlem yapan komutların aynı çıktı şemasına sahip olduğu varsayılmamalı.
Geçişe hazırlanırken ilk adım, mevcut slmgr kullanımını belirlemek. Örneğin bir betik klasöründeki referanslar aşağıdaki şekilde listelenebilir:
Get-ChildItem -Path 'C:\Scripts' -Recurse -File `
-Include '*.ps1', '*.cmd', '*.bat', '*.vbs', '*.wsf' |
Select-String -Pattern 'slmgr' |
Select-Object Path, LineNumber, Line
Bu tarama yalnızca belirtilen klasördeki dosyaları kapsar. Configuration Manager görev dizileri, Intune betikleri, Grup İlkesi başlangıç betikleri ve zamanlanmış görevlerin de ayrıca incelenmesi gerekir.
Kurumsal ortamlarda geçiş, hedef sistemlerin desteğine göre planlanmalı. Önce pilot bilgisayarlarda lisans sorgulama ve etkinleştirme işlemleri doğrulanmalı; ardından başarılı ve başarısız işlem sonuçlarının merkezi raporlamaya nasıl yansıyacağı test edilmeli. OSLicense, Windows lisans yönetimini PowerShell otomasyonlarına daha uygun hale getirirken, mevcut betiklerin kontrollü biçimde yenilenmesi bu dönüşümün temelini oluşturuyor.









