2013-07-10 15 views
38

için Komut Satırı bilgi almak için örneğin: Ben notepad.exe c:\autoexec.bat,Nasıl PowerShell süreç veya C#

nasıl PowerShell Get-Process notepad yılında c:\autoexec.bat alabilirim çalıştırırsanız?

Veya nasıl C# Process.GetProcessesByName("notepad"); yılında c:\autoexec.bat alabilirim?

+0

Belki bu size yardımcı olacaktır deneyin: (http://social.msdn.microsoft.com/Forums/en-US/8efe163b [farklı süreçten komut satırı parametreleri nasıl alınır] -927e-4895-9983-b8c47b515d7c/how-to-get-komut satırı-parametreleri-dan-a-farklı-proses-içinde-c) – Corak

+0

berrak değil. Tam olarak ne yapmaya çalıştığını açıkça belirtebilir misin? @victorwoo – Rezoan

+1

Lütfen bir adım geri atın ve çözüm olarak algıladığınız şey yerine çözmeye çalıştığınız asıl sorunu açıklayın. –

cevap

74

PowerShell'de WMI aracılığıyla bir sürecin komut satırı alabilirsiniz: yönetici ayrıcalıkları başka bir kullanıcı bağlamında çalışan süreçleri hakkında bu bilgileri erişmek mümkün gerekir

$process = "notepad.exe" 
Get-WmiObject Win32_Process -Filter "name = '$process'" | Select-Object CommandLine 

Not. Normal bir kullanıcı olarak, yalnızca kendi bağlamınızda çalışan işlemler için görünür.

+1

Çalışır, teşekkür ederim. – victorwoo

+4

Bunun için de bir izin yönü var. Powershell işleminin, en azından hedef işleme eşdeğer izinlere sahip olması gerekir. Bu nedenle normal bir Powershell oturumu, yükseltilmiş (örneğin Yönetici) bir işlem için bu tür bilgileri alamayacaktır. Bu durumda, CommandLine (yanıt) sadece boş olacaktır. – CJBS

+2

@CJBS yönetici ayrıcalıkları başka bir kullanıcı bağlamında çalışan süreçleri hakkında bu bilgileri erişmek mümkün gereken hassas olmak. Normal bir kullanıcı olarak, yalnızca kendi bağlamınızda çalışan işlemler için görünür. –

1

Bu cevap Ancak futureproofing için mükemmel olduğunu ve (bu durumda ben bir güncelleme tavsiye!)-WMIObject Get yerini aldığı oldukça eski powershell kullanmadıkça, ileride bir iyilik yapmaya Al-CimInstance Hey Scripting Guy reference

bu

$process = "notepad.exe" 
Get-CimInstance Win32_Process -Filter "name = '$process'" | select CommandLine