You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Get-Service无法通过通配符列出全部NFS服务?

PowerShell Get-Service通配符查询NFS服务异常的原因与解决办法

问题现象

直接指定服务名称可找到两个运行中的NFS相关服务,但使用通配符*nfs*查询仅返回NfsClnt;添加-RequiredServices参数后,却能列出NfsRdr等依赖服务,具体输出如下:

直接指定服务名称的结果

PS C:\temp> gsv nfsrdr

Status   Name               DisplayName
------   ----               -----------
Running  nfsrdr             Client for NFS Redirector

PS C:\temp> gsv nfsclnt

Status   Name               DisplayName
------   ----               -----------
Running  nfsclnt            Client for NFS

通配符查询结果

PS C:\temp> gsv *nfs*

Status   Name               DisplayName
------   ----               -----------
Running  NfsClnt            Client for NFS

带-RequiredServices参数的查询结果

PS C:\temp> gsv *nfs* -RequiredServices

Status   Name               DisplayName
------   ----               -----------
Running  NfsRdr             Client for NFS Redirector
Running  Tcpip              TCP/IP Protocol Driver

原因分析

  1. 服务名称大小写匹配限制:nfsrdr的实际服务名称是NfsRdr(混合大小写),部分PowerShell环境中Get-Service的通配符匹配默认区分大小写,*nfs*仅匹配包含小写nfs的名称,因此NfsRdr未被命中。
  2. -RequiredServices的逻辑差异:该参数并非直接用通配符匹配服务,而是先找到NfsClnt,再递归查询它的依赖服务,NfsRdr是NfsClnt的依赖项,因此被间接列出。

解决办法

方法1:强制不区分大小写匹配

通过-CaseSensitive:$false参数关闭大小写敏感,或用Where-Object过滤:

# 方式A:关闭大小写敏感
Get-Service -Name *nfs* -CaseSensitive:$false

# 方式B:用Where-Object做模糊匹配
Get-Service | Where-Object { $_.Name -like '*nfs*' }

方法2:使用精准的混合大小写通配符

如果已知服务名称的大小写格式,直接写对应通配符:

Get-Service *Nfs*

方法3:通过DisplayName过滤

利用服务的显示名称包含NFS的特点进行过滤:

Get-Service | Where-Object { $_.DisplayName -like '*NFS*' }

内容的提问来源于stack exchange,提问作者Fajela Tajkiya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 06:01:22