【问题标题】:Powershell Trying To Restart Print SpoolerPowershell 尝试重新启动打印后台处理程序
【发布时间】:2021-01-14 19:53:42
【问题描述】:

我有一个获取 Windows Print Spooler 实际名称的 PowerShell 脚本

$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
}

但是,当我尝试通过它的真实名称或显示名称重新启动打印后台处理程序时,我得到了同样的错误:

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)”启动服务,但都出现相同的错误,但我可以在服务控制管理器 (Services) 中启动它。

我想知道我错过了什么。

【问题讨论】:

    标签: powershell windows-services spooler


    【解决方案1】:

    我不明白为什么您的代码不起作用。 [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
    

    【讨论】:

    • 这行得通,但是返回的 -Name 是“Print Spooler”,然而,正如您所说,Service Manager 中的名称是 Spooler。谢谢。
    • @octopusgrabbus - 那是因为嘿不是同一个属性。 [grin] spooler.Name,但 Print Spooler.Display Name。 [咧嘴]
    【解决方案2】:

    使用 @Lee_Dailey 的使用 -InputObject 的示例,这将返回 Spooler,而不是 Print Spooler(谢谢,Lee)

    PS C:\Users\fred> Get-Service -InputObject "Print Spooler"
    
    Status   Name               DisplayName
    ------   ----               -----------
    Running  Spooler            Print Spooler
    
    
    PS C:\Users\fred>
    

    【讨论】:

    • 不客气!很高兴知道您可以根据需要使用它... [grin]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-14
    • 2018-10-23
    • 1970-01-01
    • 1970-01-01
    • 2019-12-26
    • 1970-01-01
    相关资源
    最近更新 更多