Como usar o PowerShell para limpar filas de impressão

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

Obter acesso

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:

  1. 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.
  2. 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.
  3. 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:

  1. Verificação de energia: Verifique se o cabo de alimentação da impressora está conectado ao plugue e se o dispositivo está ligado.
  2. Conectividade: Verifique novamente a conexão da impressora com o computador.
  3. Página de teste: Imprima uma página de teste para confirmar se a impressora está funcionando corretamente.
  4. Reiniciar: Em geral, uma simples reinicialização do computador e da impressora pode resolver muitos problemas.
  5. 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.

Próximas etapas

Montar uma equipe de TI eficaz requer uma solução centralizada que seja a principal ferramenta de entrega de serviços. Com NinjaOne, a TI monitora, gerencia, protege e oferece suporte a todos os dispositivos, onde quer que estejam, dispensando infraestrutura complexa no local.

Saiba mais sobre a solução NinjaOne Remote Script Deployment, agende uma demonstração, ou inicie sua avaliação gratuita da plataforma NinjaOne.

Categorias:

Recomendados para você

Aprimoramento da comunicação de TI: Domínio das mensagens pop-up do PowerShell

Simplifique a configuração de sua VPN: Configurar uma VPN com o PowerShell

Automatização da criação de atalhos para a área de trabalho remota usando o PowerShell

Como criar uma nova conta de usuário local com o PowerShell

Dominando o gerenciamento de energia do Windows: Um guia do PowerShell para profissionais de TI e MSPs

Como renomear máquinas Windows com o PowerShell

Termos e condições NinjaOne

Ao clicar no botão “Aceito” abaixo, você indica sua aceitação dos seguintes termos legais, bem como dos nossos Termos de Uso:

  • Direitos de propriedade: A NinjaOne é proprietária e continuará a ser proprietária de todos os direitos, títulos e interesses relativos ao script (incluindo os direitos autorais). A NinjaOne está concedendo a você uma licença limitada para usar o script de acordo com os presentes termos legais.
  • Limitação de uso: Você só poderá usar o script para fins comerciais internos ou pessoais legítimos, sendo vedado compartilhar o script com terceiros.
  • Proibição de republicação: Em nenhuma circunstância você tem permissão para republicar o script em qualquer biblioteca de scripts pertencente ou sob o controle de qualquer outro fornecedor de software.
  • Isenção de responsabilidade da garantia: O script é fornecido “no estado em que se encontra” e “conforme disponível”, sem qualquer tipo de garantia. A NinjaOne não promete ou garante que o script estará livre de defeitos ou que atenderá às suas necessidades ou expectativas específicas.
  • Assunção de riscos: O uso do script é por sua própria conta e risco. Você reconhece que há certos riscos inerentes ao uso do script, e você compreende e assume cada um desses riscos.
  • Renúncia e isenção de responsabilidade: Você não responsabilizará a NinjaOne por consequências adversas ou não intencionais resultantes do seu uso do script e renunciará a quaisquer direitos ou tutelas legais que possa ter contra a NinjaOne em relação ao seu uso do script.
  • EULA: Se você for cliente da NinjaOne, o uso do script está sujeito ao Contrato de Licença de Usuário Final aplicável a você (EULA).