Todos nós dependemos de impressoras, seja no escritório ou no trabalho remoto. No entanto, por mais essenciais que sejam, as impressoras às vezes podem ser complicadas. Para os profissionais de TI e os provedores de serviços gerenciados (MSPs), manter a eficiência dos servidores de impressão é fundamental. Portanto, quando surgem problemas com a impressora, ter um método eficaz para resolvê-los se torna inestimável.
Entendendo as filas de impressão
Uma fila de impressão é uma área de armazenamento temporário para trabalhos de impressão que estão esperando para serem impressos. Quando você envia um documento para uma impressora, ele não vai diretamente para o hardware da impressora. Em vez disso, ele primeiro encontra seu caminho para a fila de impressão. A partir daí, a fila de impressão gerencia com eficiência esses trabalhos, enviando-os para a impressora quando estiverem prontos.
Entretanto, como qualquer sistema, a fila de impressão pode apresentar problemas. Talvez um determinado trabalho fique preso, impedindo o processamento dos trabalhos subsequentes. Talvez uma impressora fique off-line, fazendo com que a fila se acumule. Essas interrupções podem causar atrasos e ineficiências operacionais.
É nesse ponto que o script do PowerShell discutido nesta postagem do blog se torna inestimável. Ele foi projetado para limpar todos os trabalhos da fila de impressão, garantindo operações de impressão sem problemas. Para utilizar esse script, verifique se você tem privilégios de administrador.
O roteiro
#Requires -Version 5.1
<#
.SYNOPSIS
Clears Print Queue for all printers
.DESCRIPTION
Clears Print Queue for all printers.
This script will stop the printer spooler service, clear all print jobs, and start the printer spooler service.
If some print jobs are not cleared, then a reboot might be needed before running this script again.
.EXAMPLE
No parameters needed
.OUTPUTS
String
.NOTES
Minimum OS Architecture Supported: Windows 10, Windows Server 2016
Release Notes:
Initial Release
(c) 2023 NinjaOne
By using this script, you indicate your acceptance of the following legal terms as well as our Terms of Use at https://www.ninjaone.com/terms-of-use.
Ownership Rights: NinjaOne owns and will continue to own all right, title, and interest in and to the script (including the copyright). NinjaOne is giving you a limited license to use the script in accordance with these legal terms.
Use Limitation: You may only use the script for your legitimate personal or internal business purposes, and you may not share the script with another party.
Republication Prohibition: Under no circumstances are you permitted to re-publish the script in any script library or website belonging to or under the control of any other software provider.
Warranty Disclaimer: The script is provided “as is” and “as available”, without warranty of any kind. NinjaOne makes no promise or guarantee that the script will be free from defects or that it will meet your specific needs or expectations.
Assumption of Risk: Your use of the script is at your own risk. You acknowledge that there are certain inherent risks in using the script, and you understand and assume each of those risks.
Waiver and Release: You will not hold NinjaOne responsible for any adverse or unintended consequences resulting from your use of the script, and you waive any legal or equitable rights or remedies you may have against NinjaOne relating to your use of the script.
EULA: If you are a NinjaOne customer, your use of the script is subject to the End User License Agreement applicable to you (EULA).
.COMPONENT
Printer
#>
[CmdletBinding()]
param ()
begin {
function Test-IsElevated {
$id = [System.Security.Principal.WindowsIdentity]::GetCurrent()
$p = New-Object System.Security.Principal.WindowsPrincipal($id)
$p.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator)
}
}
process {
if (-not (Test-IsElevated)) {
Write-Error -Message "Access Denied. Please run with Administrator privileges."
exit 1
}
Write-Host "Stopping print spooler service"
$StopProcess = Start-Process -FilePath "C:WINDOWSsystem32net.exe" -ArgumentList "stop", "spooler" -Wait -NoNewWindow -PassThru
# Exit Code 2 usually means the service is already stopped
if ($StopProcess.ExitCode -eq 0 -or $StopProcess.ExitCode -eq 2) {
Write-Host "Stopped print spooler service"
# Sleep just in case the spooler service is taking some time to stop
Start-Sleep -Seconds 10
Write-Host "Clearing all print queues"
Remove-Item -Path "$env:SystemRootSystem32spoolPRINTERS*" -Force -ErrorAction SilentlyContinue
Write-Host "Cleared all print queues"
Write-Host "Starting print spooler service"
$StartProcess = Start-Process -FilePath "C:WINDOWSsystem32net.exe" -ArgumentList "start", "spooler" -Wait -NoNewWindow -PassThru
if ($StartProcess.ExitCode -eq 0) {
Write-Host "Started print spooler service"
}
else {
Write-Host "Could not start Print Spooler service. net start spooler returned exit code of $($StartProcess.ExitCode)"
exit 1
}
}
else {
Write-Host "Could not stop Print Spooler service. net stop spooler returned exit code of $($StopProcess.ExitCode)"
exit 1
}
exit 0
}
end {}
Acesse mais de 300 scripts no NinjaOne Dojo
Implicações de segurança do script
Embora esse script do PowerShell seja uma vantagem para o gerenciamento de filas de impressão, é essencial estar ciente de suas implicações de segurança:
- Privilégios de administrador: O script exige direitos de administrador, pois interage com serviços de nível de sistema, como o spooler de impressão. Se você não for um administrador, não deverá executar esse script.
- Vulnerabilidades em potencial: Se não for devidamente protegido, agentes mal-intencionados poderão explorar o script, excluindo trabalhos de impressão ou até mesmo interrompendo serviços. Certifique-se sempre de que o script seja proveniente de fontes confiáveis e seja mantido em locais seguros.
- Consulta: Se você tiver alguma dúvida em relação à segurança do script, é sempre aconselhável consultar um profissional de segurança de TI.
Outras dicas rápidas para solucionar problemas com a impressora
Está tendo problemas com a impressora? Além de usar o script do PowerShell para limpar a fila de impressão, aqui estão algumas etapas gerais de solução de problemas:
- Verificação de energia: Verifique se o cabo de alimentação da impressora está conectado ao plugue e se o dispositivo está ligado.
- Conectividade: Verifique novamente a conexão da impressora com o computador.
- Página de teste: Imprima uma página de teste para confirmar se a impressora está funcionando corretamente.
- Reiniciar: Em geral, uma simples reinicialização do computador e da impressora pode resolver muitos problemas.
- Suporte do fabricante: Se os problemas persistirem, considere entrar em contato com o fabricante da impressora para obter suporte dedicado.
Considerações finais
No cenário dinâmico da TI, as ferramentas que simplificam as operações e resolvem problemas do mundo real são inestimáveis. Esse script do PowerShell para limpar a fila de impressão é uma dessas ferramentas, garantindo operações de impressão eficientes e sem problemas. Sempre aborde esses scripts com uma compreensão de sua finalidade, benefícios e possíveis implicações.