gpt4 book ai didi

powershell - 使用Set-Service远程停止和重新启动服务

转载 作者:行者123 更新时间:2023-12-04 10:36:37 25 4
gpt4 key购买 nike

我列出了通常需要在6台服务器上重新启动的10到15个服务。我有一个脚本,该脚本调用服务列表,然后调用服务器列表,然后停止所有服务:

$Services = Get-Content -Path "C:\Powershell\Services.txt"
$Machines = Get-Content -Path "C:\Powershell\Machines.txt"
Get-Service -Name $Services -ComputerName $Machines | Set-Service -Status Stopped

然后,我还有另一个单独的脚本来重新启动它们:
$Services = Get-Content -Path "C:\Powershell\Services.txt"
$Machines = Get-Content -Path "C:\Powershell\Machines.txt"
Get-Service -Name $Services -ComputerName $Machines | Set-Service -Status Running

我检查了一下,似乎找不到一种将其放入单个脚本的方法。据我了解,Set-Service仅具有停止,启动和暂停服务的功能,而不能同时重新启动它们。

有任何想法吗?我可能会错过一些完全显而易见的东西。

最佳答案

要重新启动服务,只需使用 Restart-Service :

$Services = Get-Content -Path "C:\Powershell\Services.txt"
$Machines = Get-Content -Path "C:\Powershell\Machines.txt"
Get-Service -Name $Services -ComputerName $Machines | Restart-Service

由于根据注释,PowerShell v6已从 *-Service cmdlet中删除了对远程访问的支持,因此在运行v6或更高版本时,需要诉诸 Invoke-Command进行远程执行,如下所示:
Invoke-Command -Computer $Machines -ScriptBlock {
Get-Service -Name $using:Services -ErrorAction SilentlyContinue |
Restart-Service
}

或像这样:
Invoke-Command -Computer $Machines -ScriptBlock {
Restart-Service $using:Services -ErrorAction SilentlyContinue
}

另一个选择是WMI:
$fltr = ($Services | ForEach-Object { 'Name="{0}"' -f $_ }) -join ' or '
Get-WmiObject Win32_Service -Computer $Machines -Filter $fltr | ForEach-Object {
$_.StopService()
$_.StartService()
}

关于powershell - 使用Set-Service远程停止和重新启动服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31749844/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com