关于PowerShellGet-Service的坑-创新互联
起因
有一个业务需求,客户给了3个服务名称,如果windows服务器上有且仅有其中1个服务的时候,验证通过,处理某些逻辑。
创新互联自2013年创立以来,公司以网站设计制作、网站设计、系统开发、网络推广、文化传媒、企业宣传、平面广告设计等为主要业务,适用行业近百种。服务企业客户数千家,涉及国内多个省份客户。拥有多年网站建设开发经验。为企业提供专业的网站建设、创意设计、宣传推广等服务。 通过专业的设计、独特的风格,为不同客户提供各种风格的特色服务。实现
传入3个服务名称,使用 Get-Service -Name SERVICENAME
分别查询,将结果写入map返回。
$map={}
$service = Get-Service -Name SERVICENAME
if($service)
{
$map[SERVICENAME] = "installed"
}
else
{
$map[SERVICENAME] = "none"
}
结果
ServicesA installed
ServicesB installed
ServicesC none
事实上,服务器上只安装了ServicesA,怎么会存在ServicesB?
仔细看发现:
1.客户提供的ServicesB Name和ServicesA DisplayName一模一样。
2.ServicesA 和 ServicesB查出来的是同一个服务。
就算一模一样,也不该查出来同一个服务,因为我使用的命令是:Get-Service -Name SERVICENAME
,这里指定了Name参数,并非DisplayName。
我们查看一下Get-Service
的定义
本地验证
在本机随便找一个服务,使用Get-Service -Name SERVICENAME
命令查询服务信息,分别传入Name和DisplayName作为 -Name 的参数
这......
FIX
$map={}
$service = Get-Service -Name SERVICENAME
if($service)
{
if($service.Name -eq SERVICENAME)
{
$map[SERVICENAME] = "installed"
}
else
{
$map[SERVICENAME] = "none"
}
}
else
{
$map[SERVICENAME] = "none"
}
网页名称:关于PowerShellGet-Service的坑-创新互联
网址分享:http://pwwzsj.com/article/gcpds.html