通过计划任务执行时 powershell 脚本的奇怪结果
Strange result from powershell script when executing via scheduled task
我正在 运行 编写一个 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)"
当手动 运行 运行脚本时,返回的输出是:
日期,内存,CPU
2016-08-02T14:09:36,15062687744,0
2016-08-02T14:09:38,15062425600,0
当运行通过任务调度器运行脚本时,返回的输出是:
日期,内存,CPU
2016-08-02T13:58:25,15065047040 624189440,0
2016-08-02T14:05:01,15061901312 624713728,0
不同之处在于 Mem,出于某种原因,它增加了额外的价值。有谁知道这是为什么?
原来这是我自己的错误,有两个名称非常相似的应用程序池,-match 捕获了两个。但它仍然没有解释为什么它只在任务计划程序中显示而不在 ISE 中显示。嗯,现在通过添加 -and -notmatch "text" 部分来解决。
例如
Get-WmiObject Win32_process | where {$_.CommandLine -Match "$app_pool_name" -and $_.CommandLine -notmatch "<<text in other command line>>"}
添加评论
我正在 运行 编写一个 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)"
当手动 运行 运行脚本时,返回的输出是:
日期,内存,CPU
2016-08-02T14:09:36,15062687744,0
2016-08-02T14:09:38,15062425600,0
当运行通过任务调度器运行脚本时,返回的输出是:
日期,内存,CPU
2016-08-02T13:58:25,15065047040 624189440,0
2016-08-02T14:05:01,15061901312 624713728,0
不同之处在于 Mem,出于某种原因,它增加了额外的价值。有谁知道这是为什么?
原来这是我自己的错误,有两个名称非常相似的应用程序池,-match 捕获了两个。但它仍然没有解释为什么它只在任务计划程序中显示而不在 ISE 中显示。嗯,现在通过添加 -and -notmatch "text" 部分来解决。
例如
Get-WmiObject Win32_process | where {$_.CommandLine -Match "$app_pool_name" -and $_.CommandLine -notmatch "<<text in other command line>>"}
添加评论