windows - 带有依赖服务的定时任务重启服务

标签 windows powershell printing scheduled-tasks

我有一个充当打印服务器的 Windows 2008 R2 服务器。

几乎所有在此服务器上出现的问题都可以通过重新启动后台打印程序服务来解决。

我想出了一个每天晚上自动重启服务的计划,我发现了这个命令:

Powershell.exe -ExecutionPolicy Bypass -Command { Restart-Service -Name spooler }

问题是我的假脱机程序有三个依赖于它的服务,所以这个命令不起作用。在“spooler”之后添加 -force 命令是否安全,或者还有其他方法吗?

最佳答案

重新启动具有依赖项的服务需要首先停止依赖项服务。有一个Dell KB article带有示例代码。如果链接失效,稍微调整一下的版本就像这样,

# Service to be restarted
$restartedService = "FooBar"

# Get service dependencies
$dependents = (get-service $restartedService).dependentservices  

# information about dependent services
$dependentservices = gwmi Win32_Service | Select-object name,state,startmode | ? {$dependents.name -contains $_.name}

# Stop dependencies
Write-Host "Stopping Services" -f Yellow

foreach ($service in $dependentservices){

Write-Host "`r`nAnalyzing $($service.name)" -f Yellow

    if($service.startmode -eq "auto" -or $service.status -eq "Running"){
        Write-Host "Stopping $($service.name)"
        stop-service $service.name
    } else{
        "$($service.name) is $($service.state) with the startmode: $($service.startmode)"
    }
}

# Stop the service
stop-service $restartedService -force

Write-Host "Starting Services" -f Yellow

# start dependencies
foreach ($service in $dependentservices){

    Write-Host "`r`nAnalyzing $($service.name)" -f Yellow

    if($service.startmode -eq "auto"){
        "Starting $($service.name)"
        start-service $service.name
    } else{
        "$($service.name) is $($service.state) with the startmode: $($service.startmode)"
    }
}

# start service
start-service $restartedService

关于windows - 带有依赖服务的定时任务重启服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32323731/

相关文章:

c++ - 无论如何,是否可以通过 PC 重启或用户单击应用程序快捷方式来识别 MFC 应用程序启动?

使用 PowerShell 进行 MySQL 转储

powershell - 将 powershell 控制台窗口移动到屏幕左侧的最佳方法是什么?

php - 如何让 PHP 等到为打印创建 PDF?

c# - 如何控制下拉列表中显示的屏保名称?

java - 如何在 Windows 10 启动时启动 Eclipse

powershell - 如何在所有域中搜索用户?

powershell - 在 PowerShell 中检索 MSIEXEC 退出代码

c - 结构体的输出传递给函数

python-escpos 直接打印文本