Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops powershell中的重新启动循环_Loops_Powershell - Fatal编程技术网

Loops powershell中的重新启动循环

Loops powershell中的重新启动循环,loops,powershell,Loops,Powershell,我正在编写一个脚本来监视PowerShell中的一些性能问题。下面是我想做的概述 每60秒检查正在使用的每个提交字节 如果低于60%,记录并睡眠 如果超过60%,记录消耗大量分页内存的进程,发出警报并返回步骤1 我希望它无限期地运行(直到部分完成后重新开始),但我在围绕这些循环概念进行思考时遇到了困难。根据我所读到的,我可能会使用break或continue,但我不确定最有效的方法是什么 这是我正在使用的部分代码。如果有关系的话,我将使用一个函数作为日志功能,并将其作为作业运行,因此它将在后

我正在编写一个脚本来监视PowerShell中的一些性能问题。下面是我想做的概述

  • 每60秒检查正在使用的每个提交字节
  • 如果低于60%,记录并睡眠
  • 如果超过60%,记录消耗大量分页内存的进程,发出警报并返回步骤1
我希望它无限期地运行(直到部分完成后重新开始),但我在围绕这些循环概念进行思考时遇到了困难。根据我所读到的,我可能会使用
break
continue
,但我不确定最有效的方法是什么

这是我正在使用的部分代码。如果有关系的话,我将使用一个函数作为日志功能,并将其作为作业运行,因此它将在后台运行

        Add-Type -AssemblyName System.Windows.Forms
    Do{
        $value = (Get-Counter -Counter "\Memory\% committed bytes in use").CounterSamples.CookedValue
        LogOnly -Text "Committed bytes in use is currently $($value)"
        Start-Sleep -Seconds 60
      }

    Until($value -gt 60)        
         LogOnly -Text "Commited bytes in use is currently $($value)."
         $Processes = Get-Process | Where {$_.PM -gt 500MB} | ForEach {LogOnly -Text "Processes above 300MB is $($_.ProcessName)"} 
         [System.Windows.Forms.MessageBox]::Show("Committed Memory % has increased to $value.", 'Memory Warning', '0', 'Warning') 

谢谢

这对我来说很好:

while ( $true ) {
  $value = (Get-Counter -Counter "\Memory\% committed bytes in use").CounterSamples.CookedValue
  if ( $value -lt 60 ) {
    Write-Host "Committed bytes in use is under limit. Value is currently $value"
  }
  else {
    Write-Host "Commited byes in use is over limit. Value is currently $value"
  }
  Start-Sleep -Seconds 3
}

这对我来说很好:

while ( $true ) {
  $value = (Get-Counter -Counter "\Memory\% committed bytes in use").CounterSamples.CookedValue
  if ( $value -lt 60 ) {
    Write-Host "Committed bytes in use is under limit. Value is currently $value"
  }
  else {
    Write-Host "Commited byes in use is over limit. Value is currently $value"
  }
  Start-Sleep -Seconds 3
}

是的,我试过类似的方法,如果值小于60,它就可以工作,但当值大于60时,我还需要记录并采取其他措施,但我无法让它工作。我试过使用
Else{Do other stuff}
但它只是挂起,从未运行该部分。请参阅更新的答案。如果
$value
大于或等于60,
else
子句将运行。是的,这就是我所拥有的,但是else子句没有运行。这是我正在尝试的一个简化版本<代码>While($True){$value=(获取计数器-计数器“\Memory\%committed bytes in use”)。如果($value-lt 60){Write Host“committed bytes in use低于限制,则CounterSamples.CookedValue。值当前为$($value)”},否则{Write Host“committed byes in use超过限制。值当前为$($value)。”}我用你的代码得到了
$value
并更新了答案。它对我来说工作得很好。一个好的文本编辑器,如和正确的代码格式和缩进,可以帮助解决这些问题。是的,我尝试过类似的方法,如果值小于60,它就可以工作,但当值大于60,我还需要记录并采取其他措施,但我无法让它工作。我试过使用
Else{Do other stuff}
但它只是挂起,从未运行该部分。请参阅更新的答案。如果
$value
大于或等于60,
else
子句将运行。是的,这就是我所拥有的,但是else子句没有运行。这是我正在尝试的一个简化版本<代码>While($True){$value=(获取计数器-计数器“\Memory\%committed bytes in use”)。如果($value-lt 60){Write Host“committed bytes in use低于限制,则CounterSamples.CookedValue。值当前为$($value)”},否则{Write Host“committed byes in use超过限制。值当前为$($value)。”}我用你的代码得到了
$value
并更新了答案。一个好的文本编辑器,比如正确的代码格式和缩进,可以帮助解决这类问题。