zoukankan      html  css  js  c++  java
  • 关于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"
    }
    
  • 相关阅读:
    JavaScript获取浏览器高度和宽度值
    机器学习2
    2014.7.23
    2014.7.22
    STM32 定时器
    STM32 外部中断
    STM32--systick延时
    STM32 时钟
    输入捕获
    DAC
  • 原文地址:https://www.cnblogs.com/talentzemin/p/14663183.html
Copyright © 2011-2022 走看看