Ocultar la búsqueda en la barra de tareas con PowerShell
Ayer compartí algunas funciones de PowerShell para configurar la barra de tareas de Windows 10 para que se oculte automáticamente. Esto funciona muy bien en mi escritorio virtual cuando grabo mis cursos de Pluralsight. Pero incluso cuando estaba oculto, todavía aparecía una molesta franja blanca en el cuadro de búsqueda. Así que también me deshice de eso. A continuación se muestran algunas funciones de PowerShell que ocultarán y mostrarán el cuadro de búsqueda en un escritorio de Windows 10. Sí, hay pasos manuales para ocultar esta función, ¡pero estoy automatizando aquí! Como siempre, incluso si cree que no necesita hacer esto, es posible que haya elementos útiles de PowerShell en el código.
La configuración que controla el cuadro de búsqueda está en el registro del usuario actual. La configuración del registro es HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Search. Debajo, una tecla llamada SearchBoxTaskbarMode controla la visualización. Lo más probable es que esta clave no exista en su escritorio. Si el valor de DWord es 0, el cuadro de búsqueda estará oculto. Un valor de 2 lo mostrará. Puede usar PowerShell para establecer este valor.
Set-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Search -Name SearchBoxTaskbarMode -Value 0 -Type DWord -ForceEl parámetro -Force creará la entrada si no existe. Al igual que con la ocultación automática de la barra de tareas, deberá reiniciar el proceso del Explorador. Como parece que hago esto con frecuencia, decidí poner esto en una función separada. Una razón es que cuando se utiliza Windows Sandbox, a veces el Explorador no se reinicia automáticamente como debería. Mi función mata Explorer, prueba si se está ejecutando y, si no, lo inicia.
Function Restart-Explorer {
<#
.Synopsis
Restart the Windows Explorer process.
#>
[cmdletbinding(SupportsShouldProcess)]
[Outputtype("None")]
Param()
Write-Verbose "[$((Get-Date).TimeofDay) BEGIN ] Starting $($myinvocation.mycommand)"
Write-Verbose "[$((Get-Date).TimeofDay) BEGIN ] Stopping Explorer.exe process"
Get-Process -Name Explorer | Stop-Process -Force
#give the process time to start
Start-Sleep -Seconds 2
Try {
Write-Verbose "[$((Get-Date).TimeofDay) BEGIN ] Verifying Explorer restarted"
$p = Get-Process -Name Explorer -ErrorAction stop
}
Catch {
Write-Warning "Manually restarting Explorer"
Try {
Start-Process explorer.exe
}
Catch {
#this should never be called
Throw $_
}
}
Write-Verbose "[$((Get-Date).TimeofDay) END ] Ending $($myinvocation.mycommand)"
}Luego construí funciones relativamente simples para deshabilitar y habilitar el cuadro de búsqueda.
Function Disable-TaskBarSearch {
<#
.Synopsis
Disable the Windows taskbar search box
#>
[cmdletbinding(SupportsShouldProcess)]
[Alias("Hide-SearchBar")]
[OutputType("Boolean")]
Param()
Begin {
Write-Verbose "[$((Get-Date).TimeofDay) BEGIN ] Starting $($myinvocation.mycommand)"
} #begin
Process {
Write-Verbose "[$((Get-Date).TimeofDay) PROCESS] Hiding Task Bar Search"
Try {
$splat = @{
Path = 'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Search'
Name = 'SearchBoxTaskbarMode'
Value = 0
Type = 'DWord'
Force = $True
ErrorAction = 'Stop'
}
Set-ItemProperty @splat
if ($WhatIfPreference) {
#return false if using -Whatif
$False
}
else {
$True
}
}
Catch {
$False
Throw $_
}
Restart-Explorer
} #process
End {
Write-Verbose "[$((Get-Date).TimeofDay) END ] Ending $($myinvocation.mycommand)"
} #end
}
Function Enable-TaskBarSearch {
<#
.Synopsis
Enable the Windows taskbar search box
#>
[cmdletbinding(SupportsShouldProcess)]
[Alias("Show-SearchBar")]
[OutputType("Boolean")]
Param()
Begin {
Write-Verbose "[$((Get-Date).TimeofDay) BEGIN ] Starting $($myinvocation.mycommand)"
} #begin
Process {
Write-Verbose "[$((Get-Date).TimeofDay) PROCESS] Showing Task Bar Search"
Try {
$splat = @{
Path = 'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Search'
Name = 'SearchBoxTaskbarMode'
Value = 2
Type = 'DWord'
Force = $True
ErrorAction = 'Stop'
}
Set-ItemProperty @splat
if ($WhatIfPreference) {
#return false if using -Whatif
$False
}
else {
$True
}
}
Catch {
$False
Throw $_
}
Restart-Explorer
} #process
End {
Write-Verbose "[$((Get-Date).TimeofDay) END ] Ending $($myinvocation.mycommand)"
} #end
}Puede ver que las funciones llaman a la función Restart-Explorer. Mi versión de SearchBarTools.ps1 incluye esa función. También decidí que la función escribiera un resultado booleano en la canalización. Puedo usar esto en scripts de control si quiero verificar el proceso.
Estos comandos también admiten -WhatIf, que se pasará a la función Restart-Explorer.
Ahora tengo un conjunto de herramientas de PowerShell que puedo usar con mis herramientas de automatización de escritorio para configurar los ajustes exactamente como los necesito para mis trabajos de curso.
Espero que hayas encontrado algo útil en el código. Disfrutar.
