2013-07-10 10 views
38

के लिए कमांड लाइन की जानकारी प्राप्त करने के लिए उदाहरण के लिए: अगर मैं चलाने notepad.exe c:\autoexec.bat,कैसे PowerShell में एक प्रक्रिया या सी #

मैं कैसे c:\autoexec.batGet-Process notepad में PowerShell में मिल सकता है?

या मैं Process.GetProcessesByName("notepad"); में सी # में कैसे प्राप्त कर सकता हूं?

+0

हो सकता है कि यह आप में मदद मिलेगी का प्रयास करें: (http://social.msdn.microsoft.com/Forums/en-US/8efe163b [एक अलग प्रक्रिया से आदेश पंक्ति पैरामीटर प्राप्त करने के लिए कैसे] -927e-4895-9983-b8c47b515d7c/कैसे-से-कम-द-कमांड-लाइन-पैरामीटर-से-अलग-प्रक्रिया-इन-सी) – Corak

+0

यह स्पष्ट नहीं है। क्या आप स्पष्ट रूप से निर्दिष्ट कर सकते हैं कि आप वास्तव में क्या करने की कोशिश कर रहे हैं? @victorwoo – Rezoan

+1

कृपया एक कदम वापस लें और समाधान के रूप में जो आप समझते हैं उसके बजाय हल करने की कोशिश कर रहे वास्तविक समस्या का वर्णन करें। –

उत्तर

74

PowerShell में आप WMI के माध्यम से एक प्रक्रिया का कमांड लाइन प्राप्त कर सकते हैं:

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

ध्यान दें कि आप की जरूरत व्यवस्थापक विशेषाधिकारों किसी अन्य उपयोगकर्ता के संदर्भ में चल रहे प्रक्रियाओं के बारे में है कि जानकारी का उपयोग करने में सक्षम होना। एक सामान्य उपयोगकर्ता के रूप में यह केवल आपके संदर्भ में चल रही प्रक्रियाओं के लिए आपको दिखाई देता है।

+1

यह काम करता है, धन्यवाद। – victorwoo

+4

इसके लिए एक अनुमति पहलू भी है। पावरहेल प्रक्रिया को कम से कम लक्ष्य प्रक्रिया के बराबर अनुमतियों की आवश्यकता होती है। तो एक नियमित पावरहेल सत्र ऐसी प्रक्रिया के लिए ऐसी जानकारी प्राप्त नहीं कर पाएगा जो उन्नत चल रहा है (उदा। प्रशासक के रूप में)। इस मामले में, कमांडलाइन (प्रतिक्रिया) बस खाली हो जाएगा। – CJBS

+2

@CJBS सटीक होने के लिए आपको किसी अन्य उपयोगकर्ता के संदर्भ में चल रही प्रक्रियाओं के बारे में उस जानकारी तक पहुंचने में सक्षम होने के लिए व्यवस्थापकीय विशेषाधिकारों की आवश्यकता है। एक सामान्य उपयोगकर्ता के रूप में यह केवल आपके संदर्भ में चल रही प्रक्रियाओं के लिए आपको दिखाई देता है। –

1

इस उत्तर तथापि futureproofing के लिए, उत्कृष्ट है और जब तक आप (इस स्थिति में मैं एक अद्यतन सलाह देते हैं!) जाओ-WMIObject ने ले लिया है बहुत पुरानी powershell का उपयोग कर रहे भविष्य आप पर एक एहसान, ऐसा करने के लिए प्राप्त करें-CimInstance Hey Scripting Guy reference

इस

$process = "notepad.exe" 
Get-CimInstance Win32_Process -Filter "name = '$process'" | select CommandLine 
संबंधित मुद्दे