Recherche de site Web

Gestion de la barre des tâches Windows 10 avec PowerShell


Lorsque je travaille sur un cours Pluralsight, j'ai tendance à configurer une machine virtuelle pour l'enregistrement. Bien que, dernièrement, j'ai essayé avec Windows 10 Sandbox. C'est pratique lorsque tout ce dont j'ai besoin est un bureau Windows 10. Lorsque je configure le système, je dois configurer des paramètres particuliers. Naturellement, j'utilise un script PowerShell pour automatiser le processus. Un élément que je voulais aborder était la barre des tâches de Windows 10. Lorsque j’enregistre un cours, j’aime qu’il se masque automatiquement. Bien sûr, je pourrais le définir manuellement. Mais ce n’est pas amusant.

Après une petite recherche sur Internet, je suis tombé sur cette page. En plus des étapes manuelles, l'auteur a également fourni un extrait de code PowerShell ! J'ai supposé qu'il y aurait un paramètre de registre que je pourrais configurer et j'espérais le trouver. Mais c'était encore mieux. Le code de l’auteur a été écrit pour être utilisé à partir d’une invite CMD pour appeler quelques commandes PowerShell. Mais comme j'utilise déjà PowerShell pour la configuration de mon bureau, j'ai pris son code et créé des fonctions PowerShell réutilisables.

Le hack consiste à modifier la clé de registre trouvée dans « HKCU:SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\StuckRects3 ». La clé Paramètres est binaire. Mais dans PowerShell, il sera affiché sous forme de tableau.

Pour activer ou désactiver le paramètre de masquage automatique de la barre des tâches, il vous suffit de définir l'élément [8]. Une valeur de 3 activera le masquage automatique et 2 le désactivera. Il y a une mise en garde : vous devez redémarrer le processus Explorer pour que la modification prenne effet. Aucun problème. Je peux utiliser Stop-Process. Vous voulez voir ce que j’ai trouvé ?

#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

}

Étant donné que j'apporte des modifications au registre et que je supprime un processus, les fonctions prennent en charge -WhatIf. Set-ItemProperty héritera de la préférence WhatIf. Techniquement, Stop-Process aussi, mais je voulais montrer comment vous pouvez ajouter votre propre gestion WhatIf pour les commandes qui ne reconnaissent pas -WhatIf.

La commande est écrite pour fonctionner localement et n'affecte que l'utilisateur actuel. Les fonctions ont également des alias plus clairs et spécifiques à une tâche.

Vous n’aurez peut-être pas besoin des commandes, mais j’espère qu’il existe une technique ou un concept qui vous sera utile.

Maintenant, si vous voulez bien m'excuser, je dois faire enregistrer ce nouveau cours.

Articles connexes