如何在 windows 服务器 2012 中使用 Powershell 5 检查 windows 服务的启动类型是 "auto" 或 "auto-delayed"
How to check the start type of a windows service is "auto" or "auto-delayed" using Powershell 5 in windows server 2012
在维护期间,在停止 Windows 服务之前,我需要将其启动类型设置为手动。稍后我需要将它切换回原来的启动类型。所以我需要在停止服务之前知道启动类型。
在Windows10中,我知道有一个叫做"DelayedAutoStart"的属性,但是在WindowsServer 2012中好像没有。请问如何开始Powershell 中的服务类型?
我在 Windows Server 2012 上使用 Powershell 5.1。
Here 是一个很好的 post,有一些方法可以处理 Windows 服务的 DelayedAutoStart
属性。
对于您的 PowerShell 版本,您最好使用 sc.exe。
查询服务启动类型
您可以使用 sc.exe
查询服务启动类型,但信息以文本形式返回,而不是 PowerShell 对象,因此您必须进行一些文本操作。我拼凑了一个快速的单行程序,可以为给定名称的服务获取启动类型。
sc.exe qc "SERVICE_NAME" | Select-String "START_TYPE" | ForEach-Object { ($_ -replace '\s+', ' ').trim().Split(" ") | Select-Object -Last 1 }
这是一个示例,我将它与循环结合使用以获取机器上每个服务的状态。
foreach($Service in (Get-Service)) {
Write-Host "$($Service.ServiceName)"
sc.exe qc "$($Service.ServiceName)" | Select-String "START_TYPE" | ForEach-Object { ($_ -replace '\s+', ' ').trim().Split(" ") | Select-Object -Last 1 }
}
设置服务启动类型
您可以设置服务的启动类型,执行类似于以下操作...
sc.exe config NameOfTheService start= delayed-auto
或在 PowerShell 中包装 sc.exe
...
$myArgs = 'config "{0}" start=delayed-auto' -f 'TheServiceName'
Start-Process -FilePath sc.exe -ArgumentList $myArgs
从 PowerShell 6.0 开始,他们添加了对 AutomaticDelayedStart
的支持,但是由于您使用的是 PowerShell 5.1,因此这不适用(但可能适用于其他读者)。
Set-Service -Name "Testservice" –StartupType "AutomaticDelayedStart"
在维护期间,在停止 Windows 服务之前,我需要将其启动类型设置为手动。稍后我需要将它切换回原来的启动类型。所以我需要在停止服务之前知道启动类型。
在Windows10中,我知道有一个叫做"DelayedAutoStart"的属性,但是在WindowsServer 2012中好像没有。请问如何开始Powershell 中的服务类型?
我在 Windows Server 2012 上使用 Powershell 5.1。
Here 是一个很好的 post,有一些方法可以处理 Windows 服务的 DelayedAutoStart
属性。
对于您的 PowerShell 版本,您最好使用 sc.exe。
查询服务启动类型
您可以使用 sc.exe
查询服务启动类型,但信息以文本形式返回,而不是 PowerShell 对象,因此您必须进行一些文本操作。我拼凑了一个快速的单行程序,可以为给定名称的服务获取启动类型。
sc.exe qc "SERVICE_NAME" | Select-String "START_TYPE" | ForEach-Object { ($_ -replace '\s+', ' ').trim().Split(" ") | Select-Object -Last 1 }
这是一个示例,我将它与循环结合使用以获取机器上每个服务的状态。
foreach($Service in (Get-Service)) {
Write-Host "$($Service.ServiceName)"
sc.exe qc "$($Service.ServiceName)" | Select-String "START_TYPE" | ForEach-Object { ($_ -replace '\s+', ' ').trim().Split(" ") | Select-Object -Last 1 }
}
设置服务启动类型
您可以设置服务的启动类型,执行类似于以下操作...
sc.exe config NameOfTheService start= delayed-auto
或在 PowerShell 中包装 sc.exe
...
$myArgs = 'config "{0}" start=delayed-auto' -f 'TheServiceName'
Start-Process -FilePath sc.exe -ArgumentList $myArgs
从 PowerShell 6.0 开始,他们添加了对 AutomaticDelayedStart
的支持,但是由于您使用的是 PowerShell 5.1,因此这不适用(但可能适用于其他读者)。
Set-Service -Name "Testservice" –StartupType "AutomaticDelayedStart"