अगर मुझे एक पॉवरशेल स्क्रिप्ट से एक बाहरी प्रोग्राम शुरू करना है और फिर दूसरा शुरू करना है, तो क्या पहला प्रोग्राम अगले कमांड को चलाने से पहले बाहर निकलने की प्रतीक्षा करता है?

उदाहरण के लिए:

 # Assume pagent loaded our key...
 & {
      & pscp -sftp "<some-path>\text*.json" nonroot@somehost:/home/nonroot/json ;
      Write-Output $LASTEXITCODE;
      & plink nonroot@somehost  "/bin/processJSON.sh /home/nonroot/json";
      Write-Output $LASTEXITCODE;
  }
0
leeand00 24 मई 2018, 05:36

1 उत्तर

सबसे बढ़िया उत्तर

विंडोज़ पर, कंसोल एप्लिकेशन को पूरा करने के लिए पावरशेल हमेशा समकालिक रूप से प्रतीक्षा करेगा। Win32 अनुप्रयोगों के लिए, यदि कमांड के आउटपुट को पुनर्निर्देशित नहीं किया जाता है, तो कमांड एसिंक्रोनस रूप से चलेगा। यदि इसे पुनर्निर्देशित किया जाता है, तो PowerShell कमांड के पूरा होने की प्रतीक्षा करेगा। उदाहरण के लिए, कमांड लाइन से notepad चलाने से नोटपैड पावरशेल के साथ एसिंक्रोनस रूप से चलना शुरू हो जाएगा, लेकिन अगर आप notepad | out-null चलाते हैं तो पावरशेल तब तक इंतजार करेगा जब तक कि आगे बढ़ने से पहले नोटपैड प्रक्रिया समाप्त नहीं हो जाती। Linux या MacOS पर, "windows" और "non-windows" अनुप्रयोगों के बीच कोई OS भेद नहीं है, इसलिए PowerShell हमेशा चाइल्ड प्रोसेस के पूरा होने की प्रतीक्षा करता है। इसलिए जब तक एप्लिकेशन खुद को बैकग्राउंड में नहीं डालता (जो कि बहुत सारे GUI टूल करते हैं), इन प्लेटफॉर्म पर आपको & का उपयोग करके बैकग्राउंड जॉब के रूप में प्रक्रिया को स्पष्ट रूप से चलाना होगा। xedit &.

1
Bruce Payette 26 मई 2018, 01:04