0

我正在運行powershell腳本,當從ISE運行時輸出一組值,但是當通過任務計劃程序運行同一任務時,它似乎添加了第二個值在手動運行時不顯示。多數民衆贊成被執行的代碼如下:powershell腳本通過計劃任務執行時產生的奇怪結果

import-module WebAdministration 

$app_pool_name = <<app_pool_name_goes_here>> 

$memused = "" 
$cpuused = "" 

$datetime = get-date -format s 
$memused = Get-WmiObject Win32_process | where CommandLine -Match "$app_pool_name" 
$id = dir IIS:\AppPools\$app_pool_name\WorkerProcesses\ | Select-Object -expand processId 
$cpuUsed = Get-WmiObject Win32_PerfFormattedData_PerfProc_Process | where IDProcess -Match $id 

Add-Content -path C:\Winsys\PSOutput\$app_pool_name-CPU-RAM_test.txt -value "$datetime,$($memUsed.workingsetsize),$($cpuUsed.PercentProcessorTime)" 

運行腳本時手動返回的輸出是:

日期,MEM,CPU

2016-08-02T14:09:36,15062687744 ,0

2016-08-02T14:09:38,15062425600,0

當通過任務調度運行該腳本返回的輸出是:

日期,MEM,CPU

2016-08-02T13:58:25,15065047040 624189440,0

2016-08-02T14:05:01,15061901312 624713728,0

的區別作爲Mem,出於某種原因它增加了額外的價值。有人知道爲什麼嗎?

+1

下降$ memused到另一個文件,所以你可以看到這兩個過程的細節是管理回暖。 –

+0

謝謝,這讓我走上了正軌 – Saf

回答

0

原來這是我自己的錯誤,有兩個名稱非常相似的應用程序池,-match正在捕獲兩者。但它仍然沒有解釋爲什麼它只顯示在任務調度程序中,而不是在ISE中顯示。嗯,現在通過添加「 - and -notmatch」文本部分來解決。

E.g.

Get-WmiObject Win32_process | where {$_.CommandLine -Match "$app_pool_name" -and $_.CommandLine -notmatch "<<text in other command line>>"} 

添加註釋

相關問題