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"
    }
    
  • 相关阅读:
    值类型和引用类型
    0513二分查找练习
    0512随机4位验证码
    0511java 随机6个不同的彩票数
    随机数的产生机制
    0510Java 练习
    0509java练习题
    java循环作业
    字符集的由来及发展
    hdu2577_键入字母
  • 原文地址:https://www.cnblogs.com/talentzemin/p/14663183.html
Copyright © 2011-2022 走看看