有一個業(yè)務需求,客戶給了3個服務名稱,如果windows服務器上有且僅有其中1個服務的時候,驗證通過,處理某些邏輯。
創(chuàng)新互聯(lián)自2013年創(chuàng)立以來,公司以網(wǎng)站設計制作、網(wǎng)站設計、系統(tǒng)開發(fā)、網(wǎng)絡推廣、文化傳媒、企業(yè)宣傳、平面廣告設計等為主要業(yè)務,適用行業(yè)近百種。服務企業(yè)客戶數(shù)千家,涉及國內(nèi)多個省份客戶。擁有多年網(wǎng)站建設開發(fā)經(jīng)驗。為企業(yè)提供專業(yè)的網(wǎng)站建設、創(chuàng)意設計、宣傳推廣等服務。 通過專業(yè)的設計、獨特的風格,為不同客戶提供各種風格的特色服務。傳入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"
}