关于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://bzwzjz.com/article/gcpds.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 成都网站制作 成都做网站建设公司 盐亭网站设计 营销型网站建设 攀枝花网站设计 成都网站建设推广 响应式网站设计 成都网站设计公司 企业网站制作 专业网站建设 网站建设改版 定制级高端网站建设 成都网站建设 成都商城网站建设 成都网站建设公司 成都网站设计公司 成都网站建设 定制网站建设多少钱 成都网站制作 阿坝网站设计 重庆企业网站建设 企业网站建设