एक पावरस्क्रिप्‍ट लिपि को सफलतापूर्वक चलाने के बाद PsExec क्यों लटका हुआ है?


12

स्क्रिप्ट काफी सीधे आगे है। बस विंडोज़ सेवाओं का एक गुच्छा शुरू करने की कोशिश करता है। लक्ष्य मशीन पर स्थानीय रूप से निष्पादन ठीक रहता है। स्क्रिप्ट वास्तव में ठीक निष्पादित कर रही है जब PsExec के माध्यम से किया जाता है, तो यह कभी भी वापस नहीं आता है जब तक कि मैं अपने CMP प्रॉम्प्ट पर "एंटर" कुंजी को हिट नहीं करता हूं। यह एक समस्या है, क्योंकि यह टीमसिटी से बुलाया जा रहा है, और यह एजेंट को PsExec के लौटने का इंतजार कर रहा है।

मैंने निम्नलिखित कोशिश की है:

  • एक exitऔर exit 0Powershell स्क्रिप्ट के अंत में जोड़ना
  • इस SF प्रश्न< NUL के उत्तर के अनुसार PsExec कॉल के अंत में जोड़ना
  • एक >जोड़ को पुनर्निर्देशित करना

यह मैं वास्तव में कैसे कह रहा हूँ psexec:

psexec \\target -u domain\username -p password powershell c:\path\script.ps1

कोई फर्क नहीं पड़ता कि मैं क्या करता हूं, यह तब तक लटका रहता है जब तक कि मैं स्थानीय रूप से cmd प्रॉम्प्ट पर नहीं। एंट्री मारने के बाद, मुझे संदेश मिलता है:

powershell exited on target with error code 0.

जवाबों:


11

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

उदाहरण:

psexec \\target -u domain\username -p password cmd /c "echo . | powershell c:\path\script.ps1"

क्या इसे कमांड लाइन - कस्टम स्क्रिप्ट या कमांड लाइन के रूप में स्थापित किया जाता है - निष्पादन योग्य (टीम में)?
वोजटेक टूबिकस

ठीक है Ive ने इसे निष्पादन योग्य के रूप में स्थापित किया और इससे मदद मिली। धन्यवाद दोस्त मैंने 1 दिन बिताए हैं इसका निदान। प्रचार कीजिये!
वोजटेक टूबिकस

एक दिन के बाद समस्या वापस आ गई ...
वोजटेक ट्यूरिकज़

11

मुझे पता है कि उत्तर देर से आता है, यह पहले से ही पता चल गया होगा, यदि यह भविष्य के आगंतुकों के लिए उपयोगी नहीं हो सकता है।

STDIN को हैंग से आने में सक्षम होने के लिए शक्तियां निष्पादन के लिए पुन: निर्देशित किया जाना चाहिए (यहां यह STDIN में प्रतीक्षा करता है)। इस का उपयोग करने में सक्षम होने के लिए -inputformat कोई नहीं

powershell -inputformat none -File powershell_script.ps1 काम करेगा।

चेक करें - https://connect.microsoft.com/PowerShell/feedback/details/572313/powershell-exe-can-hang-if-stdin-is-redirected


न केवल यह काम करता है, बल्कि यह भी बताता है कि स्वीकृत उत्तर काम क्यों करता है। धन्यवाद!
jpaugh

5
psexec \\target -u domain\username -p password -d powershell c:\path\script.ps1

साथ ही समस्या को ठीक करता है।

-dPsexec के लिए झंडा "चलाने के लिए और बाहर निकलने के" एक गैर सहभागी तरीके से की तरह है:

-d आवेदन समाप्त होने का इंतजार न करें।

केवल गैर-संवादात्मक अनुप्रयोगों के लिए उपयोग करें।


0

शक्तियां बाहर नहीं निकल रही हैं। इस कमांड लाइन का प्रयास करें

Powershell -command script.ps1

0

मैं psexecVBS स्क्रिप्ट के साथ चल रहा था और सबसे अच्छा (EX:) के रूप में चिह्नित समाधान psexec \\target -u domain\username -p password cmd /c "echo . | powershell c:\path\script.ps1"प्रत्येक 3 या इतने रन के दौरान मेरे लिए काम कर रहा था। मैं खुदाई करता रहा और मुझे प्रत्येक स्विच का विवरण मिला

मैंने "-s" की कोशिश करने का फैसला किया और यह कि मेरे लिए हर बार काम किया यहां मेरा उदाहरण है:

call C:\psexec.exe %SERVER_NAME% -u %USERNAME% -p %PASSWORD% -h -s cscript %pathTomyVBSscript%
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.