2017-01-03 39 views
1

標題可能不是很有益的,但我無法解釋更沒有代碼,所以這裏是腳本我試圖運行工作:擴展性不是一個「如果」段

$CpuCores = (Get-WMIObject Win32_ComputerSystem).NumberOfLogicalProcessors 

(Get-Counter "\Process(w3wp*)\% Processor Time").CounterSamples | 
    Select-Object InstanceName, 
        @{ n = "CPU"; e = { [Decimal]::Round(($_.CookedValue/$CpuCores),1) }} | 
    ForEach-Object { 
     if ($_.CPU -gt 80) { 
      Restart-Service -Name W3SVC 
     } 
    } 

所以想法是檢查任何超過80%CPU使用率的iis進程,如果是,請重新啓動web服務。如果我從ForEach-Object中刪除了所有內容,並在列表中獲得我的進程列表和當前CPU使用情況的百分比,以便部分工作,但我似乎無法讓我的if部分獲取CPU屬性。

+0

嗨,你的代碼在這裏工作得很好。什麼行爲不符合你的想法? – sodawillow

+0

我認爲它不工作的原因是因爲我將'Restart-Service'換成了一個簡單的'$ _.CPU',並改爲'-gt 0',我什麼也沒有得到。只要在'if'之前寫出'$ _'就給了我列表,但添加CPU屬性似乎沒有按照預期工作。 –

回答

0

看來它確實工作,一些測試失敗了,因爲我試圖比較一個整數與進程列出0.4%的例子。
-gt 0.0相比效果更好。

相關問題