为什么 Get-Service 不显示具有 KernelDriver ServiceType 的服务?

问题描述 投票:0回答:1

我正在使用 Get-Service 来列出某些类型的服务。然后我遇到了显示为

RDPDR
的服务:

# Get-Service RDPDR | Select-Object *

UserName            :
Description         : Remote Desktop Device Redirector Driver
DelayedAutoStart    : False
BinaryPathName      : System32\drivers\rdpdr.sys
StartupType         : Manual
Name                : RDPDR
RequiredServices    : {RDBSS}
CanPauseAndContinue : False
CanShutdown         : False
CanStop             : False
DisplayName         : Remote Desktop Device Redirector Driver
DependentServices   : {UmRdpService}
MachineName         : .
ServiceName         : RDPDR
ServicesDependedOn  : {RDBSS}
StartType           : Manual
ServiceHandle       : Microsoft.Win32.SafeHandles.SafeServiceHandle
Status              : Stopped
ServiceType         : KernelDriver
Site                :
Container           :

但是,我发现在没有给出确切名称的情况下,并没有列出这个,例如:

# Not from here:
# Get-Service | Select Status, StartType, Name, DisplayName | Sort-Object -Property Name |ft -AutoSize


# Neither here:
# Get-Service  | Select Status, Name, ServiceType | Sort-Object -Property Name |ft -AutoSize

所以我希望能够列出它们:

# Gives weird errors, and no results
# Get-Service | Where-Object {$_.ServiceType -eq "KernelDriver"}

Get-Service: Service 'McpManagementService (McpManagementService)' cannot be queried due to the following error:
Get-Service: Service 'NPSMSvc_1cde02 (NPSMSvc_1cde02)' cannot be queried due to the following error:
Get-Service: Service 'WebManagementUser_1cde02 (WebManagementUser_1cde02)' cannot be queried due to the following error:

问:如何列出

ServiceType
KernelDriver
的所有服务?


更新:

powershell 存储库中记录了(至少)3 个相关错误。

  1. https://github.com/PowerShell/PowerShell/issues/20188
  2. https://github.com/PowerShell/PowerShell/issues/19373
  3. https://github.com/PowerShell/PowerShell/issues/10371

相关

powershell service windows-services
1个回答
0
投票

您使用Where-Object 的方向是正确的。但是,默认情况下,Get-Service 可能不会检索 ServiceType 属性,这在您尝试按其过滤时可能会导致问题。

您还可以使用 Get-WmiObject cmdlet,它会检索有关服务的更多详细信息,包括其 ServiceType。

Get-WmiObject -Class Win32_Service | Where-Object { $_.ServiceType -eq 'Kernel Driver' } | Select-Object Name, DisplayName, State, StartMode

这应该列出 ServiceType 为 KernelDriver 的所有服务

让我知道它是否适合您

© www.soinside.com 2019 - 2024. All rights reserved.