PowerShell脚本在通过计划任务

时间:2016-08-02 13:47:30

标签: windows powershell scheduled-tasks windows-server-2008 windows-server-2008-r2

我正在运行一个powershell脚本,当从ISE运行时输出一组值但是当通过任务调度程序运行相同的任务时,它似乎添加了第二个值,该值在手动运行时不显示。正在执行的代码如下:

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 个答案:

答案 0 :(得分:0)

原来这是我自己的错误,有两个名称非常相似的应用程序池,-match正在捕获它们。但它仍然没有解释为什么它只在任务调度程序而不是ISE中显示。好吧,现在通过添加-and -notmatch“text”部分来解决。

E.g。

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

添加评论