Windows Server/Windows 10: Cómo eliminar trabajos de impresión atascados con PowerShell (Spooler)
Esta semana tuve la tarea de eliminar trabajos de impresión de la cola. Sin embargo, algunos de ellos no pudieron eliminarse. Entonces decidí escribir un artículo al respecto y también un script de PowerShell. La eliminación de trabajos de impresión en un servidor de impresión implica tres tareas: Detener el servicio de cola de impresión. Elimine todo el contenido del directorio den spool. Y finalmente inicie el servicio de cola de impresión. Juntémoslos todos en un script de PowerShell.
La funcionalidad
El guión hace lo siguiente:
- detiene el servicio de cola de impresión
- elimina todo el contenido de C:\Windows\System32\spool\PRINTERS\
- inicia el servicio de cola de impresión
Esto garantiza que se eliminen todos los trabajos de impresión atascados. Ojalá ?
En acción …
¿Estás seguro de que quieres hacer esto? ¡Considere que eliminará todos los trabajos de impresión!
Presione Y.
También hay un estado de error. Por ejemplo, cuando no puede iniciar ni detener el servicio de cola de impresión. Otros errores se generan mediante el manejo de errores de PowerShell. Revisar la carpeta no tiene sentido. Mientras tanto, podrían llegar más trabajos de impresión.
La secuencia de comandos
Por último, pero no menos importante, el guión en sí. Fue un trabajo rápido y no es perfecto, pero hace lo que se supone que debe hacer. Fin del tema.
do {
Write-Host '""""\\ This script deletes all print jobs. """"\\'
''
$sure=Read-Host "Are you sure you want to delete all Print Jobs on $env:computername (Y/N)"
''
If ($sure -eq 'Y')
{
'================================================================='
Stop-Service spooler
Write-Host '1. Stopping Spooler Service ...' -ForegroundColor Green
Remove-Item -Path $env:windir\system32\spool\PRINTERS\*.*
Write-Host "2. Clearing content in $env:windir\system32\spool\PRINTERS" -ForegroundColor Green
Write-Host '3. Starting Spooler Service ...' -ForegroundColor Green
$start=Start-Service Spooler -ErrorAction Ignore
If ((Get-Service spooler).status -eq 'Stopped')
{Write-Host '!!! Error. Spooler could not be started or stopped. Check Service. !!!' -ForegroundColor Red}
'================================================================='
''
PAUSE
}
}
while ($sure -ne 'N')
Copie el código en PowerShell ISE y guárdelo como un archivo ps1. De forma predeterminada, Windows abre archivos ps1 con el bloc de notas. Eso no es bueno. Puede cambiar la configuración modificando la configuración predeterminada del programa para las extensiones de archivo. Pero la mejor manera (también con respecto a Windows UAC) es almacenar el archivo en algún lugar y colocar un enlace en su escritorio.
Pégalo en tu escritorio a través de un enlace
Bueno, hay muchas maneras de invocar este script. Por ejemplo, puede ponerlo en una función o ejecutarlo a través de un enlace. Mi secuencia de comandos se encuentra en C:\PowerShell y el nombre del archivo es Clear_Print_Jobs.ps1.
Luego cree un acceso directo en su escritorio.
Ahora coloque la siguiente línea en la ruta de ubicación:
powershell -noprofile -command "&{start-process powershell -ArgumentList '-noprofile -file "C:\PowerShell\Clear_Print_Jobs.ps1"' -verb RunAs}"
Haga clic en Siguiente y especifique un nombre para el acceso directo.
Haga clic en Finalizar.
Haga clic derecho y seleccione "Ejecutar como administrador" y ¡diviértase eliminando trabajos de impresión atascados!
¡Hasta la próxima con PowerShell!







