Kayıt Defteri İşletim Sistemi ÜrünAdı'nı PowerShell ile Güncelleyin


Birçoğunuzun benim gibi olduğunuzu ve Windows 10'dan Windows 11'e yerinde yükseltme yaptığınızı veya yapacağınızı tahmin ediyorum. İşletim sistemi adını görmek için bunun gibi bir PowerShell ifadesini çalıştırmak yeterince kolaydır.

Get-CimInstance win32_operatingsystem | Select-Object -property Caption

Windows 11 Pro gibi bir değer elde ediyorum. Ancak işletim sistemi bilgileri kayıt defterinde HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion altında da depolanır.

Yükseltme işlemi ProductName değerini güncelliyor gibi görünmüyor. İşletim sistemi bilgilerini almanın "en iyi" yolunun avantajlarına girmeden, sadece bu kayıt defteri ayarını gözden geçirmek istiyorum. Doğal olarak bu basit görevi otomatikleştirmek için PowerShell'i kullanmak istiyorum çünkü güncellemem gereken birkaç makinem olacak.

Bilgi almak

Öncelikle basit bir PowerShell fonksiyonunun mevcut kayıt defteri değerlerine dayalı bilgi sağlamasını istiyorum.

Function Get-OSProduct {
    [CmdletBinding()]
    Param()

    $reg = Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion'
    [PSCustomObject]@{
        Computername   = $env:computername
        ProductName    = $reg.Productname
        Build          = "{0}.{1}" -f $reg.CurrentBuildNumber,$reg.UBR
        Edition        = $reg.EditionID
        DisplayVersion = $reg.DisplayVersion
        Installed      = (Get-Date 1/1/1970).AddSeconds($reg.InstallDate)
    }
}

Bunu PowerShell oturumuma yüklemek bana bunu veriyor.

Anlayabildiğim kadarıyla Kurulum tarihi, ThinkPad'imde Windows 11 yükseltmesini çalıştırdığım tarihtir. Winver.exe'yi çalıştırırken aldığım bilgilerin aynısını yansıtacak şekilde iki kayıt defteri değerinden oluşturduğum Build özelliği. Bazıları Windows 11'in aslında Windows 10.5 olduğunu iddia edebilir, ancak bu meşru bir değer olmadığından, kayıt defterindeki ProductName değerini Get-CimInstance'tan aldığım değerle güncellemek istiyorum.

Değerin Ayarlanması

15 Ekim 2021 Güncellemesi Değiştirmek üzere olduğum bu kayıt defteri değerinin kalıcı olmadığı ortaya çıktı. Windows, yeniden başlatma sırasında ÜrünAdı'nı tekrar Windows 10'a değiştirecektir. Yine de diğer kayıt defteri ayarlarını değiştirmeye örnek olarak kodu faydalı bulabilirsiniz.

Bunu başarmak oldukça basittir.

Function Set-OSProductName {
    [cmdletbinding(SupportsShouldProcess)]
    Param()

    #save the registry path to a variable to keep code easier to read
    $regPath = 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion'

    #get OS name from CIM
    $os = Get-CimInstance -ClassName Win32_OperatingSystem -Property Caption
    Write-Verbose "Detected operatings system $($os.caption)"

    #get current value
    $current = Get-ItemPropertyValue -Path $regPath -Name ProductName
    Write-Verbose "Current product name is $current"

    #update the registry value
    #I'm creating my own -whatif code
    if ($pscmdlet.ShouldProcess($regpath,"Update ProductName from $current to $($os.caption)")) {
        Set-ItemProperty -Path $regPath -Name ProductName -Value $os.Caption
    }
}

Kayıt defterini güncellediğim için bunun yükseltilmiş bir oturumda çalıştırılması gerekiyor. Ayrıca cmdletbinding özelliğinde SupportsShouldProcess'i belirterek -Whatif için destek ekledim. Set-ItemProperty'nin -WhatIf'i otomatik olarak algılamasına izin verebilirdim, ancak daha ayrıntılı bir mesaj kullanmak için kendi Whatif işleyicimi yazmak istediğime karar verdim.

Komutu yeniden çalıştıracağım ve anında kayıt defterini güncelledim.

Özet

Bu makaledeki amacım, işletim sistemi bilgilerini CIM'den veya Kayıt Defteri'nden almanın yararlarını tartışmak değildir. Ortamınıza özgü, birbirini dikte eden ilgi çekici bir kullanım senaryonuz olabilir. Veya belki de kayıt defterini güncellemek için PowerShell'i nasıl kullanacağınız konusunda küçük bir rehberlik istediniz. Bu işlevler yerel olarak çalıştırılacak şekilde tasarlanmıştır. Ancak bunları PowerShell uzaktan iletişimini kullanacak ve uzak bilgisayarlarda çalışacak şekilde değiştirebilirsiniz. Ancak bu değişiklikleri size bırakacağım.

İlgili makaleler