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, процессор

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

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

Разница будучи Mem, по какой-то причине он добавляет дополнительную ценность. Кто-нибудь знает, почему это?

+1

падение $ memused в другой файл, так что вы можете увидеть детали обоих процессов это управление забрать. –

+0

Спасибо, это привело меня к правильному пути – Saf

ответ

0

Оказывается, это была моя собственная ошибка, есть два пула приложений с очень похожими именами, -match ловил оба. Но он все еще не объяснил, почему он отображается только в планировщике задач, а не в ISE. Хорошо, теперь разрешите, добавив раздел «-notmatch« текст ».

E.g.

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

Добавить комментарий