0

私はpowershellスクリプトを実行しています.ISEから実行すると1つの値が出力されますが、同じタスクをタスクスケジューラで実行すると、手動で実行すると表示されません。実行されていたコードは以下の通りです:手動でスクリプトを実行するとスケジュールされたタスクで実行したときの奇妙な結果

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

これは私自身のエラーであり、非常に似た名前の2つのアプリケーションプールがありますが、-matchは両方をキャッチしていました。しかし、なぜそれがISEではなくタスクスケジューラでのみ表示されているのかについてはまだ説明していません。ああ、今、-notmatch "text"セクションを追加して解決しました。

など。

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

関連する問題