我需要在大约100台Windows 2012 R2服务器上产生一些负载。我的想法是使用PowerShell远程处理开始我的脚本生成CPU负载。我也试图通过检查当前负载来控制负载,如果超过X%,则不会产生新的工作。它不是最优雅的脚本,但如果我在本地执行它,脚本就可以工作。当我远程运行它时出了问题。
我尝试了各种调用函数的方法。我修改了函数,使其包含服务器变量但仍未获得所需的结果。我已将Start-Job
替换为Invoke-Command
。 PSRemoting工作正常我可以在远程服务器上执行基本任务。
任何指导都将不胜感激
以下是我的代码
function Invoke-CPUStress
{
[CmdletBinding()]
param (
$duration
)
$start = (get-date).AddMinutes(1)
$end = $start.AddMinutes($duration)
while ((Get-Date) -lt $start)
{
sleep -Seconds 10
}
while ((get-date) -lt $end)
{
$Load = (Get-WmiObject Win32_Processor | Measure-Object -Property LoadPercentage -Average).Average
If ($Load -lt 60)
{
Start-Job -ScriptBlock {
$result = 1;
foreach ($number in 1..2147483647)
{
$result = $result * $number
sleep -Milliseconds 1
}
}
}
}
Get-Job | Stop-Job
Get-Job | Remove-Job
}
Invoke-CPUStress -duration 5