![시작 유형이 "자동"인 모든 "중지된" 서비스를 가져오는 스크립트 -- Windows](https://rvso.com/image/1510187/%EC%8B%9C%EC%9E%91%20%EC%9C%A0%ED%98%95%EC%9D%B4%20%22%EC%9E%90%EB%8F%99%22%EC%9D%B8%20%EB%AA%A8%EB%93%A0%20%22%EC%A4%91%EC%A7%80%EB%90%9C%22%20%EC%84%9C%EB%B9%84%EC%8A%A4%EB%A5%BC%20%EA%B0%80%EC%A0%B8%EC%98%A4%EB%8A%94%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%20--%20Windows.png)
따라서 서비스의 시작 유형이 "자동" 또는 "수동"이지만 현재 중지된 경우 명령을 실행하여 해당 문제를 확인하고 싶습니다.
powershell과 CMD에서는 둘 중 하나를 볼 수 있지만 필요한 데이터를 필터링하는 쉬운 방법은 없습니다.
저는 기본적으로 문제 해결 서비스에 대한 스크립트를 작성하려고 합니다. 시작해야 하지만(시작 유형에 따라) 실행되지 않는(중지 또는 일시 중단) 서비스가 있는지 확인할 수 있습니다.
내가 겪고 있는 문제는 powershell 또는 CMD가 심층 필터 또는 결과 파이핑을 허용하지 않는다는 것입니다. 이 문제를 해결하는 데 도움을 줄 수 있는 방법이 있나요?
이 문제를 해결하려면 어떻게 해야 합니까?
답변1
살펴보면서이 질문이전 버전의 PowerShell에서는 다음과 같은 결과를 얻을 수 있습니다.
Get-WmiObject -Class Win32_Service | Select-Object Name,State,StartMode | Where-Object {$_.State -ne "Running" -and $_.StartMode -eq "Auto"}
최신 버전(최소 5개, 3/4)에서는 다음을 사용할 수도 있습니다(JC2k8에서 제안함).
Get-Service | Select-Object -Property Name,Status,StartType | Where-Object {$_.Status -eq "Stopped" -and $_.StartType -eq "Automatic"}
이전 버전의 PowerShell에서는 Get-Service
cmdlet이 StartType
.
PowerShell은 다양한 필터링과 파이핑을 지원합니다. :)
답변2
(get-service|?{ $_.Status -eq "Stopped" -and $_.StartType -eq "Automatic"})|
select DisplayName, StartType, Status
답변3
Get-Service | Where-Object {$_.Status -eq "Stopped"} | where starttype -match automatic
답변4
문제에 적합하다면 이것을 시도해 볼 수 있습니다. 아래 코드는 자동 시작 유형이 있기 때문에 실행되어야 하는 Sophos AV와 관련하여 중지된 모든 서비스를 시작하는 데 도움이 됩니다.
# Start specific automatic start services not running
$service = "*sophos*"
$server = "<server_name>"
$stoppedServices = (Get-WmiObject Win32_Service -ComputerName $server | Where-Object {$_.Name -like $service -and $_.StartMode -eq 'Auto' -and $_.State -ne "Running"}).Name
foreach ($stoppedService in $stoppedServices) {
Write-Host -NoNewline "Starting Server/Service: "; Write-Host -ForegroundColor Green $server"/"$stoppedService
Get-Service -ComputerName $server -Name $stoppedService | Start-Service
}