Windows 10 Görev Çubuğunu PowerShell ile Yönetme


Bir Pluralsight kursu üzerinde çalışırken, kayıt için bir sanal makine kurma eğilimindeyim. Ancak son zamanlarda Windows 10 Sandbox ile denemeler yapıyorum. İhtiyacım olan tek şey bir Windows 10 masaüstü olduğunda bu kullanışlıdır. Sistemi kurduğumda yapılandırmam gereken belirli ayarlar var. Doğal olarak süreci otomatikleştirmek için bir PowerShell betiği kullanıyorum. Ele almak istediğim bir öğe Windows 10 görev çubuğuydu. Bir kursu kaydederken otomatik olarak gizlenmesini seviyorum. Elbette manuel olarak ayarlayabilirim. Ama bu hiç eğlenceli değil.

İnternette küçük bir araştırma sonucu bu sayfaya rastladım. Yazar, manuel adımlara ek olarak bir PowerShell kodu pasajı da sağladı! Yapılandırabileceğim bir kayıt defteri ayarı olacağını varsaydım ve bunu bulmayı umuyordum. Ama bu daha da iyiydi. Yazarın kodu, birkaç PowerShell komutunu çağırmak için CMD komut isteminden kullanılmak üzere yazılmıştır. Ancak masaüstü yapılandırmam için zaten PowerShell kullandığım için onun kodunu aldım ve yeniden kullanılabilir PowerShell işlevleri oluşturdum.

Hack, 'HKCU:SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\StuckRects3' konumunda bulunan kayıt defteri anahtarını değiştirmektir. Ayarlar anahtarı ikili bir anahtardır. Ancak PowerShell'de dizi olarak gösterilecektir.

Görev Çubuğunun otomatik gizleme ayarını değiştirmek için tek yapmanız gereken öğe [8]'i ayarlamaktır. 3 değeri otomatik gizlemeyi etkinleştirecek, 2 değeri ise kapatacaktır. Bir uyarı var; değişikliğin etkili olması için Explorer işlemini yeniden başlatmanız gerekiyor. Sorun değil. Stop-Process'i kullanabilirim. Ne bulduğumu görmek ister misin?

#requires -version 5.1

# https://linux-console.net/677619/how-to-hide-the-taskbar-on-windows-10/

Function Enable-AutoHideTaskBar {
    #This will configure the Windows taskbar to auto-hide
    [cmdletbinding(SupportsShouldProcess)]
    [Alias("Hide-TaskBar")]
    [OutputType("None")]
    Param()

    Begin {
        Write-Verbose "[$((Get-Date).TimeofDay) BEGIN  ] Starting $($myinvocation.mycommand)"
        $RegPath = 'HKCU:SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\StuckRects3'
    } #begin
    Process {
        if (Test-Path $regpath) {
            Write-Verbose "[$((Get-Date).TimeofDay) PROCESS] Auto Hiding Windows 10 TaskBar"
            $RegValues = (Get-ItemProperty -Path $RegPath).Settings
            $RegValues[8] = 3

            Set-ItemProperty -Path $RegPath -Name Settings -Value $RegValues

            if ($PSCmdlet.ShouldProcess("Explorer", "Restart")) {
                #Kill the Explorer process to force the change
                Stop-Process -Name explorer -Force
            }
        }
        else {
            Write-Warning "Can't find registry location $regpath."
        }
    } #process
    End {
        Write-Verbose "[$((Get-Date).TimeofDay) END    ] Ending $($myinvocation.mycommand)"
    } #end

}

Function Disable-AutoHideTaskBar {
    #This will disable the Windows taskbar auto-hide setting
    [cmdletbinding(SupportsShouldProcess)]
    [Alias("Show-TaskBar")]
    [OutputType("None")]
    Param()

    Begin {
        Write-Verbose "[$((Get-Date).TimeofDay) BEGIN  ] Starting $($myinvocation.mycommand)"
        $RegPath = 'HKCU:SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\StuckRects3'
    } #begin
    Process {
        if (Test-Path $regpath) {
            Write-Verbose "[$((Get-Date).TimeofDay) PROCESS] Auto Hiding Windows 10 TaskBar"
            $RegValues = (Get-ItemProperty -Path $RegPath).Settings
            $RegValues[8] = 2

            Set-ItemProperty -Path $RegPath -Name Settings -Value $RegValues

            if ($PSCmdlet.ShouldProcess("Explorer", "Restart")) {
                #Kill the Explorer process to force the change
                Stop-Process -Name explorer -Force
            }
        }
        else {
            Write-Warning "Can't find registry location $regpath."
        }
    } #process
    End {
        Write-Verbose "[$((Get-Date).TimeofDay) END    ] Ending $($myinvocation.mycommand)"
    } #end

}

Kayıt defterinde değişiklik yaptığım ve bir işlemi sonlandırdığım için işlevler -WhatIf'i destekliyor. Set-ItemProperty WhatIf tercihini devralacaktır. Teknik olarak Durdurma Süreci de öyle, ancak -WhatIf'i tanımayan komutlar için kendi WhatIf işleminizi nasıl ekleyebileceğinizi göstermek istedim.

Komut yerel olarak çalışacak şekilde yazılmıştır ve yalnızca geçerli kullanıcıyı etkiler. İşlevlerin ayrıca daha anlaşılır ve göreve özel takma adları vardır.

Komutlara ihtiyacınız olmayabilir ama umarım yararlı bulduğunuz bir teknik veya kavram vardır.

Şimdi izin verirseniz, bu yeni kursu kaydetmem gerekiyor.

İlgili makaleler