1

私は、PowerShell とコンピューター プログラミング全般をまったく初めて使用します。10 MB のワーキング セットを超えた場合にプロセス (この場合は firefox) を強制終了するスクリプトを作成しようとしています。if ステートメントを使用してこれを行い、パイプ コマンドも含めたいと思います。これまでのところ、私はこれを持っています:

get-process|where-object {$_.ProcessName -eq"firefox"}

if ($_.WorkingSet -gt10000000)
      {kill}
else
       {"This process is not using alot of the computers resources"}

誰でもこれを修正するのを助けることができますか? firefox はワーキングセットが 10MB を超えているにも関わらず、else ステートメントは常に再現されます。

4

2 に答える 2

4

条件をループでラップする必要があります。

Get-Process | ? { $_.ProcessName -eq 'firefox' } | % {
  if ($_.WorkingSet -gt 10MB) {
    kill $_
  } else {
    "This process is not using alot of the computers resources"
  }
}

それ以外の場合、条件はパイプラインとは別に評価されます。つまり、現在のオブジェクト変数 ( $_) はその時点で空になります。

于 2013-10-27T18:03:18.577 に答える
3

Name パラメーターを使用して問題のプロセスをフィルター処理し (Where-Objectこの目的では使用する必要はありません)、オブジェクトをStop-Processコマンドレットにパイプします。スイッチに注目してください-WhatIf。これは、コマンドレットが実行された場合 (コマンドレットが実行されていない場合) に何が起こるかを示しています。コマンドレットを実行するには、それを削除します。

Get-Process -Name firefox | 
Where-Object {$_.WorkingSet -gt 10mb} | 
Stop-Process -WhatIf
于 2013-10-27T20:24:45.857 に答える