Powershell 尝试重新启动后台打印程序

Powershell Trying To Restart Print Spooler

我有一个 PowerShell 脚本可以获取 Windows Print Spooler

的实际名称
$serviceDisplayName = "Print Spooler"
$actualServiceName = (Get-Service -DisplayName "$serviceDisplayName").Name

我可以准确地查出 Print Spooler 是否是 运行:

Try
{
    $serviceInqResults = get-service -Name $actualServiceName -ErrorVariable err
}

Catch 
{
    write-output "An exception occurred while trying to see if $serviceDisplayName were running or not."
    write-output $err
}

但是,当我尝试通过真实名称或显示名称重新启动 Print Spooler 时,我遇到了同样的错误:

if($serviceInqResults.Status -ne "Running")
{
    write-output "The service is not running. Starting the $serviceDisplayName "

   try
   {
        Start-Service -Name $actualServiceName -ErrorVariable err
   }
    
    Catch
    {
        write-output $err
    }


Service 'Print Spooler (Spooler)' cannot be started due 
to the following error: Cannot open Spooler service on computer '.'.

我已经尝试启动名为“Print Spooler”、“Spooler”、“Print Spooler (Spooler)”的服务,但都出现相同的错误,但我可以在服务控制管理器(服务)中启动它.

我想知道我错过了什么。

我不明白为什么你的代码不起作用。 [blush] 但是,以下适用于我的 win10、20h2 安装,而 运行 提升 ...

$PrintSpooler = Get-Service -Name Spooler
$PrintSpooler

if ($PrintSpooler.Status -eq 'running')
    {
    Stop-Service -InputObject $PrintSpooler
    }

Get-Service -Name Spooler
Start-Service -Name Spooler
Get-Service -Name Spooler

输出...

Status   Name               DisplayName
------   ----               -----------
Running  Spooler            Print Spooler
Stopped  Spooler            Print Spooler
Running  Spooler            Print Spooler

使用 @Lee_Dailey 的示例,该示例使用了 -InputObject,这个 returns 假脱机程序,而不是打印假脱机程序(谢谢,Lee)

PS C:\Users\fred> Get-Service -InputObject "Print Spooler"

Status   Name               DisplayName
------   ----               -----------
Running  Spooler            Print Spooler


PS C:\Users\fred>