• 关于PowerShell Get-Service的坑


    起因

    有一个业务需求,客户给了3个服务名称,如果windows服务器上有且仅有其中1个服务的时候,验证通过,处理某些逻辑。

    实现

    传入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"
    }
    
  • 相关阅读:
    Laex/Delphi-OpenCV
    webbrowser 防止读取 缓存
    tesnsorflow 版本安装错了。 可以这样删除。
    python中%代表什么意思?
    python 访问 网页 获得源码
    3.2.2 break 与 continue 语句
    3.2.1 for循环与while循环的基本语法
    3.2 循环结构
    3.1.2 选择结构的几种形式
    3.1.1 条件表达式
  • 原文地址:https://www.cnblogs.com/talentzemin/p/14663183.html
Copyright © 2020-2023  润新知