2017-01-26 18 views
0

JUSTは、プロセスの所有者のユーザー名であり、リスト、配列、またはテーブルではありません。私はそれ自身で完全に必要なので、出力を変数に格納するときはONLYというユーザ名です。 (ユーザー名の代わりにSIDでもかまいません)これはPowershell 2.0またはPython 2で動作する必要があります。私はまだPowerShellとPythonの両方にかなり新しいので、実際の作業例は非常に高く評価されています。もし役立つなら、explorer.exeは所有者のユーザー名を探したいプロセスです。また、私はシステムコンテキストの答えとして提供されたコマンド/スクリプトを実行する必要があります(あなたは答えを完全にPythonで提供することも、完全にPowerShellで行うこともできます)。 Windowsのみ:Dプロセスの所有者のユーザー名/ SIDを取得する - Powershell/Python

答えて

1

Pythonのpsutilこのために良い選択のように思える:

import psutil 

pid = 1 
username = psutil.Process(pid).username 

print "Process {} is owned by {}".format(pid, username) 

Linuxの結果は次のとおりです。

Process 1 is owned by root 
+0

私は頭が少しばかげているかもしれませんが、私はWindowsでこれをやっていることを忘れています。 (powershellはそれをあきらめますか?)とにかく、それはWindows上で動作し、とにかくプロセスのpidを名前で取得します。たとえば、explorer.exeをpidに変換してから、あなたのメソッドを使って所有者を取得します。 –

+0

はい、私が列挙したコードはWindows上で動作します。私はLinux上でテストしましたが、これはすべて私が使用するものですが、 'psutil'はクロスプラットフォームとして記述されています。実行可能ファイルの名前でプロセスを検索する方法があるかもしれませんが、一意のマッピングは得られません。潜在的に 'explorer.exe'という名前のプロセスが複数存在する可能性があります。 –

+0

私の答えで 'psutil'リンクをたどり、プロセス名からPIDへの検索のための解決法を提供しているかどうか確認したいと思うかもしれません。 –

1

私が知っている以上の受け入れ答え、しかし、今後の参考のために:

Get-WmiObject -Class Win32_Process -Filter 'Name = "explorer.exe"' | ForEach-Object { $_.GetOwner() } 
+0

残念ながら、これはユーザー名を出力するだけでなく、他の出力も私が望むものではありません。 (ユーザ名だけに切り捨てる方法がない限り) –

+0

それを '$ _。GetOwner().user'に変更してください。 – BenH

+0

うわー、あなたの入力ベンのおかげで。最後に.userを使って、私が探しているのはまさにそれです! –

関連する問題