有一個業(yè)務需求,客戶給了3個服務名稱,如果windows服務器上有且僅有其中1個服務的時候,驗證通過,處理某些邏輯。
傳入3個服務名稱,使用 Get-Service -Name SERVICENAME
分別查詢,將結(jié)果寫入map返回。
$map={}
$service = Get-Service -Name SERVICENAME
if($service)
{
$map[SERVICENAME] = "installed"
}
else
{
$map[SERVICENAME] = "none"
}
ServicesA installed
ServicesB installed
ServicesC none
事實上,服務器上只安裝了ServicesA,怎么會存在ServicesB?
仔細看發(fā)現(xiàn):
1.客戶提供的ServicesB Name和ServicesA DisplayName一模一樣。
2.ServicesA 和 ServicesB查出來的是同一個服務。
就算一模一樣,也不該查出來同一個服務,因為我使用的命令是:Get-Service -Name SERVICENAME
,這里指定了Name參數(shù),并非DisplayName。
我們查看一下Get-Service
的定義
在本機隨便找一個服務,使用Get-Service -Name SERVICENAME
命令查詢服務信息,分別傳入Name和DisplayName作為 -Name 的參數(shù)
這......
$map={}
$service = Get-Service -Name SERVICENAME
if($service)
{
if($service.Name -eq SERVICENAME)
{
$map[SERVICENAME] = "installed"
}
else
{
$map[SERVICENAME] = "none"
}
}
else
{
$map[SERVICENAME] = "none"
}