2013-02-06 11 views
5

इसलिए मैंने इस प्रश्न से संबंधित प्रत्येक उत्तर को पढ़ा है लेकिन उनमें से कोई भी काम नहीं कर रहा है। इस मुझे लगता है कि कुछ विशेष तार की जगह स्थापित फ़ाइलों पर एक regex नियंत्रण रखने के चलने के बादशक्तियों को स्थापित करने के लिए exe के लिए इंतजार कैसे करें?

$exe = ".\wls1033_oepe111150_win32.exe" 
$AllArgs = @('-mode=silent', '-silent_xml=silent_install.xml', '-log=wls_install.log"') 
$check = Start-Process $exe $AllArgs -Wait -Verb runAs 
$check.WaitForExit() 

, लेकिन कोई बात नहीं क्या मैं इसे करने की कोशिश:

मैं इन पंक्तियों के स्क्रिप्ट में क्या हो रहा है कार्यक्रम स्थापित होने पर रेगेक्स चेक चलाने के लिए जारी है।

मैं इसे कैसे बना सकता हूं ताकि अगली पंक्ति निष्पादित न हो जाए जब तक यह exe इंस्टॉल करने को समाप्त न हो जाए? मैंने बिना किसी किस्मत के आउट-नल को पाइपिंग करने का भी प्रयास किया है।

+0

मुझे लगता होगा भ्रमित कर रहे हैं कि संस्थापक अंडे के लिए किसी अन्य प्रक्रिया स्थापना कर रही है। –

उत्तर

8

मैं एक परीक्षण निष्पादन योग्य है कि निम्न

Console.WriteLine("In Exe start" + System.DateTime.Now); 
    System.Threading.Thread.Sleep(5000); 
    Console.WriteLine("In Exe end" + System.DateTime.Now); 

किया फिर इस powershell स्क्रिप्ट जो के रूप में exe के लिए उम्मीद की प्रतीक्षा करता है पाठ "PS1 के अंत" और समय outputting से पहले चल रहा है खत्म करने के लिए लिखा था बनाया

push-location "C:\SRC\PowerShell-Wait-For-Exe\bin\Debug"; 
$exe = "PowerShell-Wait-For-Exe.exe" 
$proc = (Start-Process $exe -PassThru) 
$proc | Wait-Process 

Write-Host "end of ps1" + (Get-Date).DateTime 

यह निम्नलिखित शक्तियां भी exe को समाप्त करने के लिए सही तरीके से प्रतीक्षा करती हैं।

$check = Start-Process $exe $AllArgs -Wait -Verb runas 
Write-Host "end of ps1" + (Get-Date).DateTime 

WaitForExit कॉल जोड़ना मुझे यह त्रुटि देता है।

You cannot call a method on a null-valued expression. 
At line:2 char:1 
+ $check.WaitForExit() 
+ ~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : InvalidOperation: (:) [], RuntimeException 
    + FullyQualifiedErrorId : InvokeMethodOnNull 

हालांकि इस काम करता है

$p = New-Object System.Diagnostics.Process 
$pinfo = New-Object System.Diagnostics.ProcessStartInfo("C:\PowerShell-Wait-For-Exe\bin\Debug\PowerShell-Wait-For-Exe.exe",""); 
$p.StartInfo = $pinfo; 
$p.Start(); 
$p.WaitForExit(); 
Write-Host "end of ps1" + (Get-Date).DateTime 

मुझे लगता है कि हो सकता है आप नेट ढांचे प्रक्रिया वस्तु के साथ प्रारंभ प्रक्रिया PowerShell आदेश

+0

तो ऐसा लगता है कि अंतिम विजेता एक विजेता है। पहले दो बिल्कुल काम नहीं कर रहे थे। हालांकि, मैं दो मिश्रित हो रहा था। उस स्पष्टीकरण के लिए धन्यवाद। मुझे लगता है कि Google हर समय मेरे दोस्त नहीं है। –

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^