這裏是下面的代碼,我使用:檢查PowerShell版本2中的進程和進程狀態,並根據單個進程或多個進程獲取兩個不同的輸出?
$ProcessesToCheckFor = (
'company_name_uat-Historian'
)
$FoundProcesses = Get-Process -Name $ProcessesToCheckFor -ErrorAction SilentlyContinue
foreach ($Item in $ProcessesToCheckFor)
{
if ($FoundProcesses.Name -contains $Item)
{
'{0} runn1ng' -f $Item
}
else
{
'{0} fai1ed' -f $Item
}
}
代碼檢查,看是否company_name_uat-Historian
過程是在服務器上運行,並且如果它正在運行,它將輸出runn1ng
和fai1ed
如果沒有。
問題是,它只是在檢查一個進程時就像上面的代碼一樣工作,但在您嘗試檢查進程列表時不起作用。
我需要檢查的進程列表,所以當我鏈中的其餘部分如下:
$ProcessesToCheckFor = (
'company_name_uat-Historian',
'company_name_uat-KEReviewCollector',
'company_name_uat-lwm',
'company_name_uat-MQAck',
'company_name_uat-MQOutput',
'company_name_uat-SQAC',
'company_name_uat-Store',
'company_name_uat-Store_STS',
'company_name_uat-StoreLegacy',
'spotify'
)
$FoundProcesses = Get-Process -Name $ProcessesToCheckFor -ErrorAction SilentlyContinue
foreach ($Item in $ProcessesToCheckFor)
{
if ($FoundProcesses.Name -contains $Item)
{
'{0} runn1ng' -f $Item
}
else
{
'{0} fai1ed' -f $Item
}
他們所有輸出fai1ed
。
如果我一個一個地去做,每個不同的過程都會返回runn1ng
,只是所有的聚在一起就會返回fai1ed
。
旁註(如果你想知道):
runn1ng
和fai1ed
是 '碼字' 是那些獲得通過使用JavaScript的圖像所取代。我正在製作一個HTML儀表板,用於監視我的Windows服務器的工作情況,因此請考慮綠色複選標記和紅色x標記以及不要的標記。- 使用PowerShell版本2根本不是我的選擇,我負責監控的一些服務器是Windows 2008 R2。我相信他們將在今年某個時候進行更新,但項目交付成果要求我立即制定監測解決方案。還有一些服務器是2012年我喜歡編寫PowerShell腳本的服務器。
spotify
被列爲流程,因爲我知道這是一個合法的過程,但未安裝在我們的服務器上。當我編寫腳本時,我最初在我自己的個人計算機上進行了測試,如果我打開它,則使用spotify
作爲測試runn1ng
的手段,如果我關閉它,則使用fai1ed
。如果我的所有進程都是runn1ng
,並且spotify是fai1ed
,那麼這就表明PS代碼正在工作。
它出現在PowerShell的版本2
任何想法是什麼原因造成,以及如何我可以重寫它發生?