2013-08-30 7 views
21

के साथ पथ में विभाजित कारणों को रिक्त स्थान वाले पथ पर एक्सई का आह्वान करते समय मुझे शक्तियों के साथ कोई समस्या है।स्पेस पावरशेल

पुनश्च C: \ Windows Services> आह्वान अभिव्यक्ति "C: \ Windows सेवा \ MyService.exe"

शब्द 'C: \ Windows' एक cmdlet का नाम के रूप में मान्यता प्राप्त नहीं है, समारोह , स्क्रिप्ट फ़ाइल, या ऑपरेट करने योग्य कार्यक्रम। नाम की वर्तनी जांचें, या यदि पथ शामिल किया गया था, तो सत्यापित करें कि पथ सही है और पुनः प्रयास करें।

ऐसा लगता है कि यह 'विंडोज' और 'सेवाओं' के बीच की जगह पर विभाजित है। इस समस्या को हल करने के बारे में कोई विचार है?

उत्तर

30

आप यही चाहते ?: करना चाहेंगे

& "C:\Windows Services\MyService.exe" 
+1

ठीक है, ऐसा लगता है कि काम करता है लेकिन केवल अगर मैं कमांड लाइन से चलाता हूं। अगर मैं इसे पावरहेल स्क्रिप्ट में डालता हूं तो मुझे पाइपलाइन तत्व में 'अभिव्यक्ति के बाद' और 'एक अमान्य वस्तु' त्रुटि उत्पन्न होती है। – jaffa

+2

क्षमा करें कि काम किया है, मेरी गलती। – jaffa

11

आप अंतरिक्ष से पहले ही कोटेशन का उपयोग करके स्थान और एक बैकटिक बच सकते हैं:

$path = 'C:\Windows Services\MyService.exe' 
$path -replace ' ', '` ' 
invoke-expression $path 
+0

इस समाधान के साथ समस्या यह है कि पथ एक तर्क के रूप में पारित किया गया है और मैं यह नियंत्रित नहीं कर सकता कि यह कैसे बच निकला है। – jaffa

+0

आप पथ युक्त चर पर '-replace' निष्पादित कर सकते हैं और '' 'के साथ' '' को प्रतिस्थापित कर सकते हैं –

2

हैक मैं के बाद से उपयोग किया है नहीं है Invoke-Expression मेरे लिए ठीक काम करता है।

आप, रिक्तियों के साथ पथ को वर्तमान स्थान सेट अभिव्यक्ति आह्वान अपने पिछले स्थान पर वापस पाने के लिए और जारी रख सकता:

$currLocation = Get-Location 
Set-Location = "C:\Windows Services\" 
Invoke-Expression ".\MyService.exe" 
Set-Location $currLocation 

यह तभी exe में कोई रिक्ति नहीं है काम करेंगे इसका नाम।

आशा इस

1

सुनिश्चित नहीं हैं कि किसी को अभी भी यह की जरूरत है ... मैं powershell में MSBuild आह्वान करने के लिए की जरूरत है और ठीक से काम किया निम्नलिखित में मदद करता है:

$MSBuild = "${Env:ProgramFiles(x86)}\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\MSBuild.exe" 

& $MSBuild $PathToSolution /p:OutDir=$OutDirVar /t:Rebuild /p:Configuration=Release