CMDまたはVBScriptを使用して特定の記述からプロセスIDまたはイメージ名を取得する最も簡単な方法は何ですか?例えばVBScriptの説明付きのプロセスIDを取得
Description = "My application*"
は、私はIDのは、その説明を持つすべてのプロセスを取得したいです。ヘルプ
wmic /?
wmic process get /?
ため
CMDまたはVBScriptを使用して特定の記述からプロセスIDまたはイメージ名を取得する最も簡単な方法は何ですか?例えばVBScriptの説明付きのプロセスIDを取得
Description = "My application*"
は、私はIDのは、その説明を持つすべてのプロセスを取得したいです。ヘルプ
wmic /?
wmic process get /?
ため
wmic process where description='notepad.exe' get processed
はそれを行う方法です。上記はコマンドですが、VBScriptは同じオブジェクトにアクセスできます。ここにはオブジェクトRetrieving Information from Task Manager using Powershellを使った投稿があります。
tasklist-commandはあなたのための解決策である可能性があります。
tasklist /FI "IMAGENAME eq MyApplication*"
また、結果のさらなる処理のために有用であり得るCSVで出力をフォーマットするパラメータました。
プロセスを列挙する最も良い方法はWMIです。しかし、残念ながらWin32_Process
クラスのDescription
プロパティは、タスクマネージャが "Description"フィールドに表示する情報ではなく、実行可能な名前のみを格納します。その情報は、実行可能ファイルのextended attributesから取得されます。
あなたはVBScriptのと同じことを行うことができますが、それは追加のコードが必要です。
descr = "..."
Set wmi = GetObject("winmgmts://./root/cimv2")
Set app = CreateObject("Shell.Application")
Set fso = CreateObject("Scripting.FileSystemObject")
Function Contains(str1, str2)
Contains = InStr(LCase(str1), LCase(str2)) > 0
End Function
'Define an empty resizable array.
ReDim procs(-1)
For Each p In wmi.ExecQuery("SELECT * FROM Win32_Process")
dir = fso.GetParentFolderName(p.ExecutablePath)
exe = fso.GetFileName(p.ExecutablePath)
Set fldr = app.NameSpace(dir)
Set item = fldr.ParseName(exe)
'Determine the index of the description field.
'IIRC the position may vary, so you need to determine the index dynamically.
For i = 0 To 300
If Contains(fldr.GetDetailsOf(fldr, i), "description") Then Exit For
Next
'Check if the description field contains the string from the variable
'descr and append the PID to the array procs if it does.
If Contains(fldr.GetDetailsOf(item, i), descr) Then
ReDim Preserve procs(UBound(procs) + 1)
procs(UBound(procs)) = p.ProcessId
End If
Next
ないPowerShellを、CMDコマンドまたはVBScriptを使用してPLS – Juran
PSは、すべてのウィンドウのと同じオブジェクトへのアクセスを持っているが、それは、PowerShellのCMDではありません言語はそうする。 – Acat