プロセスの優先度を変える

アプリケーションの速度はハード的なものに依存すると思います。アプリケーションはどんどん重くなってきているので、CPU、メモリ等をそのまま使っていると速度は遅くなります。また、起動しているプログラムの量が増えると限られたリソースの中で分散しなければならないので、速度は遅くなります。どのプログラムに対してどのくらいのCPUを使用するかというようなことはOSが行います。タスク マネージャではプロセスごとに優先度の設定を行えます。そこで、Powershellにてプロセスの優先度を変更するシェルを作成しました。

set-PSDebug -strict
# --------------------------------
# プロセスの優先度を変更する
# 引数:プロセスの名前
# --------------------------------
Function SetProcessPriority{
    # 引数の取得
    param([string]$name)
    
    # 優先度の設定
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    # 通常(32)、低(64)、リアルタイム(256)
    # 高(128)、通常以下(16384)、通常以上(32768)
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    $value = 64
    
    # Nameが引数のWin32_Processオブジェクトの取得
    $query = "select * from win32_process where name=`'$name`'"
    $process = get-wmiobject -query $query

    # 優先度の変更
    $process.SetPriority($value) | out-null

}

# notepad.exeの優先度を「低」に変更する
SetProcessPriority "notepad.exe"