当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 用于重新启动后台打印程序服务的 PowerShell 脚本

作者:精品下载站 日期:2024-12-15 00:29:44 浏览:14 分类:玩电脑

用于重新启动后台打印程序服务的 PowerShell 脚本


有时,我们会遇到打印机后台处理程序的问题,其中文档卡在打印机队列中或打印机后台处理程序服务未运行。要修复重新启动打印后台处理程序服务问题,请使用 PowerShell 脚本检查打印机后台处理程序服务是否正在运行并重新启动打印后台处理程序服务

[玩转系统] 用于重新启动后台打印程序服务的 PowerShell 脚本

在上图中,2 个作业在打印机队列中卡住/暂停并且无法打印。

在这篇博文中,我将向您解释如何使用 PowerShell 脚本解决与打印机后台处理程序在 Windows 上不断停止相关的问题。

修复打印后台处理程序服务问题

如果文件未发送到打印机或文档滞留在打印机队列中,更常见的原因是打印机后台处理程序服务可能未运行。

Print Spooler 是打印后台处理程序的 Windows 服务名称。它在所有 Windows 操作系统和服务器操作系统上默认启用。打印机后台处理程序服务的主要工作是加载打印驱动程序、打印作业、对作业进行排队以及处理与打印机的交互。

检查打印机后台处理程序服务状态

使用下面的 PowerShell 脚本

$PrintSpooler = Get-Service -Name Spooler

# Get the Print Spooler Service status (Running or Stopped
$PrintSpooler

在上面的 PowerShell 脚本中,使用 Get-Service cmdlet 获取 Spooler 服务对象并将其分配给 $PrintSpooler 变量。

在下一行中,打印 $PrintSpooler 变量的内容。它输出打印后台处理程序服务状态、名称和显示名称,如下所示

[玩转系统] 用于重新启动后台打印程序服务的 PowerShell 脚本

PowerShell - 重新启动后台打印程序

$PrintSpooler = Get-Service -Name Spooler

# Get the Print Spooler Service status (Running or Stopped)
$PrintSpooler

# Logic to check Print Spooler Service and restart if not running

if($PrintSpooler.Status -eq 'stopped')
{
    # Start Print Spooler Service on local computer
    Start-Service $PrintSpooler
}

# Check the Print Spool Service status 
$PrintSpooler

在上面的 PowerShell 脚本中,

  • 获取Spooler服务对象
  • 检查后台打印程序服务状态
  • 检查打印后台处理程序服务是否处于停止状态
  • 如果打印后台处理程序服务处于停止状态,请使用 Start-Service Spooler 命令重新启动打印机后台处理程序服务

酷提示:如何获取文件夹和子文件夹的权限!

如何在工作站上重新启动打印机后台处理程序服务

# Get Spooler service object
$PrintSpooler = Get-Service -Name Spooler

#Restart Printer Spooler Service on WorkStation
Restart-Service $PrintSpooler

在上面的 PowerShell 脚本中,

  • 在 $PrintSpooler 变量中获取 Spooler Service 对象
  • 使用 Restart-Service 重新启动工作站上的打印后台处理程序服务

酷提示:使用测试连接来 ping 使用 PowerShell 的计算机列表!

清理打印后台处理程序队列

即使重新启动打印机后台处理程序服务后,也可能会发生打印机仍然没有响应或文件没有发送到打印机的情况。

要解决这些问题,我们需要备份打印机队列,然后清理打印机后台处理程序队列。

打印机假脱机程序队列文件的备份

在清理打印机后台处理程序队列之前,请使用以下 PowerShell 脚本备份队列

# Stop Spooler Service
Stop-Service -Name Spooler -Force
 
# To backup the Spooler files
Move-Item -Path "$env:SystemRoot\System32\spool\PRINTERS\*.*" -Destination 'C:\Spooler\Backup\' -Force

在上面的示例中,首先停止打印后台处理程序服务。

使用 Move-Item 和打印机假脱机队列路径,将假脱机队列文件移动到指定为备份的目标路径。

删除打印机后台处理程序队列文件

正如我们在上述步骤中备份了队列文件一样,运行下面的 PowerShell 脚本来删除后台打印程序队列文件,然后启动后台打印程序服务

# To delete the Printer Spooler files
Remove-Item -Path "$env:SystemRoot\System32\spool\PRINTERS\*.*"

# Start print spooler service
Start-Service -Name Spooler

在上面的 PowerShell 脚本中,Remove-Item cmdlet 采用 $env:path 环境变量指定的打印机后台处理程序队列路径,并从文件夹中删除所有文件。

酷提示:如何使用 tail - 在 PowerShell 中获取文件的最后一行!

结论

在上面的文章中,我解释了如何重新启动打印后台处理程序服务并使用不同的 PowerShell 命令来修复与打印机后台处理程序服务未响应或打印机后台处理程序服务未处于运行状态相关的问题。

在这种情况下,您可以在本地或远程工作站上重新启动后台打印程序服务。

您可以在 ShellGeek 主页上找到有关 PowerShell Active Directory 命令和 PowerShell 基础知识的更多主题。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯