【发布时间】:2018-07-03 23:50:35
【问题描述】:
我在远程服务器上有各种自动化功能,我通过 Python 脚本使用 pywinrm。我已经自动化了很多 Powershell 东西命令,但是我从来不需要运行长时间运行的 Powershell 命令。
我现在正在尝试安排一些性能计数器在性能测试期间进行捕获,并提出了以下方法来捕获我想要的内容:
Start-Job { & Get-counter "\Processor(_Total)\% Processor Time", "\Memory\Available Bytes" -SampleInterval 2 -MaxSamples 10 | Export-counter -Path $home\Desktop\perf_data.csv -FileFormat CSV }
但是,作为自动化的一部分,我想向 schtasks 提供一个命令,以便在特定时间跨所有服务器运行它。目前该过程以以下命令开始,但没有产生任何输出 - 我认为该任务一开始就死了:
schtasks /create /tn "Perf Test" /tr "powershell -noexit -command { & Start-Job { & Get-counter '\Processor(_Total)\% Processor Time', '\Memory\Available Bytes' -SampleInterval 2 -MaxSamples 10 | Export-counter -Path $home\Desktop\perf_data.csv -FileFormat CSV }}" /sc once /st 16:58:00 /sd 24/01/2018
我意识到我可以通过安排脚本运行而不是命令来让自己更轻松,但理想情况下我希望将其作为命令运行。
如果有人可以提供帮助,请提前致谢。
【问题讨论】:
-
不确定 $home 在脚本块中是否可用
-
使用所有这些语法,使用
-EncodedCommand。我recently answered a question for a similar thing -
@EBGreen 应该是。它基本上是
$Env:UserProfile的别名 -
感谢@TheIncorrigible1。不幸的是,无论是否编码,它仍然尝试以相同的方式执行。我认为这更多地与让任务在后台继续运行有关,这就是为什么在我的第二行代码中我使用
-noexit,我认为这对我有帮助,但似乎无法让它工作。 -
您使用工作有什么原因吗?我运气不好让他们始终如一地工作。此外,您在脚本块中的呼叫操作员不会做任何事情
标签: windows powershell scheduled-tasks