Windows Server
 Computer >> コンピューター >  >> システム >> Windows Server

PowerShellを使用したWindowsプロセスの管理

PowerShellには、ローカルコンピューターまたはリモートコンピューター上のプロセスを管理するための多くの機能があります。 PowerShellを使用すると、実行中のプロセスのリストを取得したり、ハングアップしたプロセスを一時停止したり、Windowsタイトルでプロセスを検索したり、非表示モードまたはインタラクティブモードで新しいプロセスを実行したりできます。

次のように、Windows10で使用可能なプロセス管理コマンドレットのリストを表示できます。

Get-Command –Noun Process

PowerShellを使用したWindowsプロセスの管理

  • Get-Process –実行中のWindowsプロセスのリストを取得します。
  • 開始プロセス –プロセス/プログラムを開始します;
  • 停止プロセス –プロセスを強制的に停止(強制終了)します。
  • デバッグプロセス –プロセスをデバッグします。
  • 待機プロセス –プロセスが終了するまで待ちます。

Get-Process:実行中のプロセスのリストを取得する

Get-Processコマンドレットは、ローカルコンピューターで実行されているプロセスのリストを表示します。

PowerShellを使用したWindowsプロセスの管理

デフォルトでは、実行中のプロセスの次のプロパティが表示されます。

  • ハンドル –このプロセスによって開かれた入出力ファイル記述子(ハンドル)の数。
  • NPM(K) –は非ページメモリ(非ページプール)です。これは、ディスクにページングされないプロセスデータのサイズ(KB単位)です。
  • PM(K)– ページングされる可能性のあるプロセスメモリのサイズ。
  • WS(K) –プロセス(ワーキングセット)で使用される物理メモリのサイズ(KB単位)。
  • CPU –プロセスで使用されたCPU時間(すべてのCPUの時間がカウントされます)。
  • ID –一意のプロセス識別子;
  • SI (セッションID)–プロセスセッションIDです(0はすべてのセッションで実行中、1-最初にログオンしたユーザーで実行中、2- 2番目にログオンしたユーザーで実行中など)。
  • ProcessName

複数のプロセスのすべてのプロパティを一覧表示するには:

Get-Process cmd,excel,notep* | Format-List *

名前(ProcessNameなど)など、特定のプロセスプロパティのみを表示できます。 )、開始時刻(StartTime )、プロセスウィンドウのタイトル(MainWindowTitle )、実行可能ファイル名(Path )と開発者名(Company ):

Get-Process winword, notep* | Select-Object ProcessName, StartTime, MainWindowTitle, Path, Company|ft

PowerShellを使用したWindowsプロセスの管理

GUIを使用して実行中のユーザープロセスのリストを表示するには(バックグラウンドプロセスとシステムプロセスは表示されません):

Get-Process | Where-Object {$_.mainWindowTitle} | Format-Table Id, Name, mainWindowtitle

PowerShellを使用したWindowsプロセスの管理

IncludeUserNameの使用 オプションで、プロセスを開始したユーザー名(所有者)を表示できます:

Get-Process -Name winword -IncludeUserName

Where-Objectの使用 、いくつかの基準に従ってプロセスを選択できます。たとえば、300 MBを超えるRAMを使用しているすべてのプロセスを表示し、メモリ使用量の降順で並べ替えて、メモリサイズをKBではなくMBで表示してみましょう。

Get-Process| where-object {$_.WorkingSet -GT 300000*1024}|select processname,@{l="Used RAM(MB)"; e={$_.workingset / 1mb}} |sort "Used RAM(MB)" –Descending

PowerShellを使用したWindowsプロセスの管理

前に説明したように、CPUパラメーターのGet-Processコマンドレットには、特定のプロセスで使用されるプロセッサー時間が秒単位で含まれています。プロセスによって使用されているCPUのパーセンテージを表示するには(タスクマネージャーと同様)、次の関数を使用します:

function Get-CPUUsagePercent
{
$CPUPercent = @{
Name = 'CPUPercent'
Expression = {
$TotalSec = (New-TimeSpan -Start $_.StartTime).TotalSeconds
[Math]::Round( ($_.CPU * 100 / $TotalSec), 2)
}
}
Get-Process | Select-Object -Property Name, $CPUPercent, Description | Sort-Object -Property CPUPercent -Descending | Select-Object -First 20
}
Get-CPUUsagePercent

PowerShellを使用したWindowsプロセスの管理

ハングしたプロセス(応答していない)を見つけるには、次のコマンドを実行します。

Get-Process | where-object {$_.Responding -eq $false}

Start-Process、Stop-Process:PowerShellを使用してプロセスを開始または停止する方法

PowerShellを使用して新しいプロセスを開始するには、次のコマンドを使用します:

Start-Process -FilePath notepad

$env:pathに実行可能ファイルがない場合 環境変数、ファイルへのフルパスを指定します:

Start-Process -FilePath 'C:\distr\app.exe'

プログラムを実行して、それに引数を渡すことができます:

Start-Process -FilePath ping -ArgumentList "-n 10 10.1.56.21"

WindowStyleの使用 オプションで、プロセスウィンドウの開始モード(通常、最小化、最大化、非表示)を設定できます。たとえば、最大化されたウィンドウでプログラムを実行し、プロセスが終了するまで待つには、次のコマンドを実行します。

Start-Process -FilePath tracert -ArgumentList "10.1.56.21" –wait -windowstyle Maximized

Stop-Processコマンドレットを使用すると、任意のプロセスを停止できます。たとえば、実行中のすべてのメモ帳プロセスを閉じるには:

Stop-Process -Name notepad

デフォルトでは、プロセスの強制終了の確認を求めるプロンプトは表示されません。指定された基準を満たすすべてのプロセスが停止されます。プロセスの停止を確認できるようにするには、 –確認を追加します オプション:

Stop-Process -Name notepad.exe -Confirm

PowerShellを使用したWindowsプロセスの管理

また、次のようにプロセスを強制終了できます。

(Get-Process -Name cmd).Kill()

PowerShellから、Windowsプロセスマネージャーに応答していないすべてのアプリを強制的に停止できます。

Get-Process | where-object {$_.Responding -eq $false}| Stop-Process

PowerShellを使用すると、ハングしたプロセスまたは閉じたプロセスを自動的に再開できます。 PowerShellを使用してリモートコンピューター上のプロセスを管理する

ComputerNameを使用できます リモートコンピューター上のプロセスを管理するためのGet-Processコマンドレットのオプション(WinRMを有効にして構成する必要があります)。

Get-Process -ComputerName srv01, srv02, srv03| Format-Table -Property ProcessName, ID, MachineName

組み込みのGet-Process機能を使用して、リモートコンピューター上のプロセスを管理します。 Invoke-Commandで利用可能なPowerShellリモーティング機能 およびEnter-PSSession コマンドレットはここではカバーされていません。

リモートコンピューター上のプロセスを強制終了する場合は、Stop-Processコマンドレットに–ComputerNameパラメーターがないことに注意してください。リモートコンピューターでプロセスを停止するには、次のPowerShellコードを使用できます。

$RemoteProcess = Get-Process -Name cmd -ComputerName srv01
Stop-Process -InputObject $RemoteProcess


  1. プロセスがWindows11/10で管理者権限で実行されているかどうかを確認する方法

    管理者権限または昇格された権限で実行されるさまざまなプログラムには、多くのプロセスがあります。一部のプロセスはプログラムを適切に実行するために昇格された特権を必要としますが、他のプロセスはそのような特権を必要としません。 管理者権限で実行されているプロセスを確認する場合 、その後、この投稿があなたを導きます。 数日前、昇格モードで管理者としてExplorerを開く方法を確認しました。その投稿で提供したヒントに基づいて、同じネイティブ機能を使用して、管理者権限として実行されているプロセスを見つけることができます。そのようなプロセスを見つけたら、必要に応じてそれらを閉じるか、実行し続けることがで

  2. Windows10でPowerShellを使用してインストール済みプログラムのリストを作成する方法

    Windows 10 PCを所有している場合は、時間の経過とともに多くのプログラムをインストールした可能性がありますが、それらすべてを覚えておくのは少し難しいです。 Windows PowerShellアプリケーションを使用すると、さまざまな目的に役立つ、コンピューターにインストールされているプログラムのリストを生成できます。たとえば、新しいコンピュータをセットアップする必要がある場合、インストールする必要のあるプログラムを見逃していないことを確認する必要があります。このガイドでは、Windows10にPowerShellを使用してインストールされたプログラムを表示する簡単な方法を紹介します。