PowerShell स्क्रिप्ट का उपयोग करके EXE फ़ाइल निष्पादित करना


111

मैं एक EXE फ़ाइल को PowerShell स्क्रिप्ट का उपयोग करके निष्पादित करने का प्रयास कर रहा हूं। यदि मैं कमांड लाइन का उपयोग करता हूं तो यह बिना किसी समस्या के काम करता है (पहले मैं इसे लागू करने के लिए निष्पादन योग्य और मापदंडों की श्रृंखला का नाम देता हूं):

"C:\Program Files\Automated QA\TestExecute 8\Bin\TestExecute.exe" C:\temp\TestProject1\TestProject1.pjs /run /exit /SilentMode

लेकिन स्क्रिप्ट के अंदर एक ही काम करना एक त्रुटि देता है:

शब्द "C: \ Program Files \ Automated QA \ TestExecute 8 \ Bin \ TestExecute.exe" C: \ temp \ TestProject1 \ TestProject1.pjs / run / exit / SilentMode को एक cmdlet, फ़ंक्शन के नाम के रूप में नहीं पहचाना जाता है , स्क्रिप्ट फ़ाइल, या संचालन कार्यक्रम। नाम की वर्तनी की जाँच करें, या यदि कोई पथ शामिल किया गया था, तो सत्यापित करें कि पथ सही है और पुन: प्रयास करें।

(मैंने "&" ऑपरेटर का उपयोग करके कमांड मंगाया।)

मैं इस समस्या को कैसे ठीक करुं?


4
कृपया अपना कोड पोस्ट करें। चूंकि यह वह जगह है जहाँ समस्या निहित है, इसलिए इसे देखना अनुमान लगाने की तुलना में बहुत आसान है।
कोड़ी ग्रे

जवाबों:


122
& "C:\Program Files\Automated QA\TestExecute 8\Bin\TestExecute.exe" C:\temp\TestProject1\TestProject1.pjs /run /exit /SilentMode

या

[System.Diagnostics.Process]::Start("C:\Program Files\Automated QA\TestExecute 8\Bin\TestExecute.exe", "C:\temp\TestProject1\TestProject1.pjs /run /exit /SilentMode")

अद्यतन करें: क्षमा करें, मैं चूक गया "(मैंने" और "ऑपरेटर)" वाक्य का उपयोग करके कमांड को लागू किया। मुझे यह समस्या तब हुई जब मैं गतिशील रूप से पथ का मूल्यांकन कर रहा था। चालान-अभिव्यक्ति निर्माण का प्रयास करें:

Invoke-Expression "& `"C:\Program Files\Automated QA\TestExecute 8\Bin\TestExecute.exe`" C:\temp\TestProject1\TestProject1.pjs /run /exit /SilentMode"

अजीब है कि मूल प्रश्न में कमांड, लगभग बिल्कुल, PS2.0 में एक वीएम पर मेरे लिए काम करता है। लेकिन वही कमांड अब PS4.0 सिस्टम पर फेल है। दिलचस्प बात यह है कि मैं TestExecute को भी कॉल कर रहा हूं। मुझे लगता है कि मुझे विकल्प 2 सबसे अच्छा लगता है, मैं इसे एक शॉट दूंगा, धन्यवाद!
EJA

33

ऐसा लगता है कि आप EXE और इसके पहले तर्क दोनों को एक ही स्ट्रिंग में निर्दिष्ट कर रहे हैं जैसे; '"C:\Program Files\Automated QA\TestExecute 8\Bin\TestExecute.exe" C:\temp\TestProject1\TestProject1.pjs /run /exit /SilentMode'। यह काम नहीं करेगा। सामान्य तौर पर आप एक देशी कमांड का आह्वान करते हैं, जिसकी राह में एक स्थान ऐसा है:

& "c:\some path with spaces\foo.exe" <arguments go here>

यह &एक कमांड की पहचान करने वाले स्ट्रिंग द्वारा अनुसरण किए जाने की उम्मीद है: cmdlet, function, native exe रिश्तेदार या निरपेक्ष पथ।

एक बार जब आप सिर्फ इस काम कर रहे हैं:

& "c:\some path with spaces\foo.exe"

आवश्यक के रूप में तर्कों के उद्धरण पर काम करना शुरू करें। यद्यपि ऐसा लगता है कि आपके तर्क ठीक होने चाहिए (कोई रिक्त स्थान, पावरस्ले द्वारा व्याख्या किए गए कोई अन्य विशेष वर्ण नहीं)।


2
किसी भी तरह से पूर्ण स्क्रिप्ट के बिना शक्तियां स्क्रिप्ट को निष्पादित करने के लिए है, अगर स्क्रिप्ट और exe एक ही फ़ोल्डर में हैं? या क्या किसी रिश्तेदार पथ का उपयोग करना संभव है?
21

7
यदि exe एक ही फ़ोल्डर में है तो आप ऐसा कर सकते हैं .\foo.exeऔर आप ..\..\foo.exeरिक्त स्थान के साथ एक सापेक्ष पथ और एक सापेक्ष पथ का उपयोग भी कर सकते हैं & '..\..\path with spaces\foo.exe'
कीथ हिल

जब आपके पास आपके कमांड में पाइप होते हैं तो आपको उद्धरणों का उपयोग करना चाहिए cmd /c "C:\temp\strarc.exe -cjd:M:\ | C:\temp\strarc.exe -s:8 -xd:N:\":।
18

2

Powershell में, .d फ़ाइल स्थान के लिए cd। उदाहरण के लिए:

सीडी सी: \ उपयोगकर्ता \ प्रशासक \ डाउनलोड

PS C: \ Users \ Administrators \ download> & '। \ Aaa.exe'

इंस्टॉलर स्क्रीन पर निर्देश को पॉप अप और पालन करता है।


वास्तव में मुझे क्या चाहिए! .exe फ़ाइल & '। \ aaa.exe' चलाएं
शरीफ यज़्दियान

2
  1. क्लोन $ args
  2. अपने सरणी को नए सरणी में धकेलें
  3. & $ पथ $ args

डेमो:

$exePath = $env:NGINX_HOME + '/nginx.exe'
$myArgs = $args.Clone()

$myArgs += '-p'
$myArgs += $env:NGINX_HOME

& $exepath $myArgs

Thx @nodoccat, एक बहुत लंबे तर्क की सूची के साथ docker कमांड लॉन्च करने के लिए एक आकर्षण की तरह काम करता है।
danidemi

1

एक डेवलपर नहीं होने के कारण मुझे एक पंक्ति में कई पीएस कमांड चलाने में एक समाधान मिला। उदाहरण के लिए:

powershell "& 'c:\path with spaces\to\executable.exe' -arguments ; second command ; etc

& (एम्परसैंड) से पहले "(दोहरा उद्धरण) रखकर यह निष्पादन योग्य निष्पादित करता है। मैंने जो भी उदाहरण पाए हैं उनमें से किसी का भी उल्लेख नहीं किया गया था। दोहरे उद्धरण चिह्नों के बिना ps शीघ्र खुलता है और इनपुट की प्रतीक्षा करता है।


हाय रिचर्डे। क्या आप अपने उत्तर के प्रारूपण में सुधार कर सकते हैं? संपादन मोड में, स्वरूपण सहायता प्रदान की गई है, इस पर एक नज़र डालें।
डोरियन टर्बा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.