Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Start-Process gibt tlw. keinen ReturnCode aus (PowerShell)

Frage Entwicklung Batch & Shell

Mitglied: mayho33

mayho33 (Level 2) - Jetzt verbinden

26.01.2014, aktualisiert 28.03.2014, 3939 Aufrufe, 4 Kommentare, 1 Danke

Hallo @ All!

Irgendwie stehe ich wieder mal am Schlauch und hoffe wieder auf tatkräftige Starthilfe!

Hier mein Problem:

Ich rufe eine Exe auf via: $RC = (Start-Process -FilePath <Irgend eine exe> /s -PassTru)
-Wait gebe ich absichtlich nicht an ich will nämlich, dass in der PS-Console sowas wie ein Fortschrittsbalken läuft. das mache ich so:

do {
write-host "*" -NoNewLine
if ($RC.ExitCode -gt -1) { Break}
Start-Sleep 1
} until ($RC.ExitCode -gt -1)

write-host ("ExitCode: + $RC.ExitCode)


Jetzt kommt es vor, dass entweder die Schleife nicht beendet wird obwohl der ExitCode sicher 0 oder höher ist, oder der ExitCode ist $null.
mit -Wait bekomme ich natürlich immer eine ExitCode, da habe ich aber auch keine Fortschrittsbalken. Den will ich aber unbedingt haben, weil einige EXEn und MSIs ziemlich groß sind und entsprechend lange brauchen.


Hat jemand ne Idee wie ich da eine saubere und vor allem sichere Lösung zustande bekomme??

Danke!

Mayho
Mitglied: colinardo
27.01.2014, aktualisiert um 01:01 Uhr
Hallo Mayho,
Schau dir mal dieses Mulithreading-Beispiel an:
http://www.administrator.de/forum/powershell-gui-bleibt-w%C3%A4hrend-ei ...
Würde den Prozess in einen parallelen Thread verlagern worin du dann mit -wait auf den Prozess wartest und dann den Exit-Code an den Hauptthread übergibst. Gerade bei MSI-Dateien ist es so das die Shell auf das Ende von msiexec warten sollte, denn sonst kommt es zu dem Phänomen das ein falscher Exit-Code ausgegeben wird (das liegt daran das msiexec ursprünglich nicht als Konsolenanwendung ausgelegt worden ist)

Was auch eine Möglichkeit wäre ist das CMDlet Start-Job mit dem sich so was realisieren ließe. Melde mich dazu nochmal...

Bis dahin ...
Grüße Uwe
Bitte warten ..
Mitglied: colinardo
LÖSUNG 27.01.2014, aktualisiert 10.02.2014
Noch ein Beispiel wie du es machen kannst:
01.
# Hashtable beinhaltet später die Informationen aus dem parallelen Thread 
02.
$rc = @{} 
03.
 
04.
# Neuen Thread erstellen 
05.
$myjob = [Powershell]::Create().AddScript({ 
06.
    param($result) 
07.
     
08.
    # hier dein Aufruf deiner MSI-Datei  
09.
    $r = start-process "msiexec /i install.msi /qn" -wait -PassThru 
10.
 
11.
    $result.ExitCode = $r.ExitCode 
12.
}).AddArgument($rc) 
13.
 
14.
# Thread starten 
15.
$myjob.BeginInvoke()| out-null 
16.
 
17.
# Warte auf das Ende des Threads 
18.
while($myjob.InvocationStateInfo.State -eq "Running"){ 
19.
    write-host "*" -NoNewLine 
20.
    sleep(1) 
21.
22.
# Gebe ExitCode aus 
23.
echo "`r`nExit-Code: $($rc.ExitCode)"
Grüße Uwe
Bitte warten ..
Mitglied: mayho33
29.01.2014, aktualisiert 10.02.2014
Hi Uwe!

Danke für die beiden Beispiele! Werde das mal in ner ruhigen Minute durchgehen. Multithreading habe ich noch nicht bedacht. Finde das ist eine tolle Idee.

Danke!

Mayho

EDIT

Hi Uwe!

nun hatte ich endlich Zeit das in meinen Code einzubauen.

Das zweite Beispiel von dir hat wunderbar geklappt ohne groß was anpassen zu müssen. Das Resultat ist wie gewünscht eine Progressanzeige in der Console. Auch die Returncodes kommen wie sie sollen.

Perfekt!! Vielen Dank!

Was habe ich daraus gelernt? Bei Problemen Uwe fragen :P

lg

Mayho!
Bitte warten ..
Mitglied: MPascalau
15.08.2015 um 18:46 Uhr
Ich habe vor lange Zeit gelesen, dass PowerShell mit ExitCode Eigenschaft von Process ein Problem hat.
Die Erklärung war viel zu Kompliziert, und ich habe vergessen.

Ich habe das Problem so korrigiert:
function Get-ProcessExitCode {
[CmdletBinding()]
param(
[parameter(Mandatory=$true, ValueFromPipeline=$true)]
[System.Diagnostics.Process]$Process)
Begin {
$private:type = [System.Diagnostics.Process]
$private:prop = $private:type.GetProperty("ExitCode")
}
Process {
return $private:prop.GetValue($Process)
}
}

$RC.WaitForExit() # Wait for process to finish!
$exitcode = Get-ProcessExitCode $RC # Get the ExitCode
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Powershell start-process
gelöst Frage von Cougar77Batch & Shell4 Kommentare

Guten Morgen, ich habe da ein kleines Problem, das ich nicht ganz verstehe. Es geht um ein kleines Powershell-Skript, ...

Batch & Shell
Powershell Start-Process mit Argumenten
gelöst Frage von lisaluftBatch & Shell4 Kommentare

Ich hatte ein cmd-Skript mit den Befehl: start /wait c:\test\CitrixReceiver.exe /silent /includeSSON ENABLE_SSON="Yes" Funktionierte genau so. Jetzt habe ich ...

Batch & Shell
Start-Process deinstalliert nicht als BackGroundJob (PowerShell)
gelöst Frage von mayho33Batch & Shell2 Kommentare

Hallo @ All Wieder einmal komme ich in Powershell nicht weiter und hoffe (wieder einmal) auf eure Hilfe!! In ...

Batch & Shell
Powershell aus Powershell starten (start-process powershell) mit Leerzeichen im Pfad
gelöst Frage von adm2015Batch & Shell1 Kommentar

Ich möchte einfach ein Powershell Script aus einem anderen Powershell Script aufrufen. (start-process powershell "c:\test.ps1") Jedoch habe ich ein ...

Neue Wissensbeiträge
Microsoft Office

Office 2010 Starter erneut auf einer frischen Windows-Version installieren

Tipp von Lochkartenstanzer vor 18 StundenMicrosoft Office8 Kommentare

Moin, vor ein paar Tagen schlug bei mir ein Kunde auf, der sein Widnows 7 geschrottet und es inklusive ...

Datenbanken

Upgrade MongoDB 3.4 auf 3.6

Erfahrungsbericht von Frank vor 20 StundenDatenbanken

Seit kurzem gibt es das 3.6 Update für die MongoDB: Sicherheit, das Sortieren, Aggregation und auch die Performance wurde ...

SAN, NAS, DAS

Backdoor Zugang und Upload-Bug in vielen Western Digital MyCloud Geräten

Information von Frank vor 21 StundenSAN, NAS, DAS2 Kommentare

James Bercegay von der Firma Gulftech hat die Fehler an Western Digital gemeldet und das Unternehmen stellt bereits ein ...

Microsoft Office

Outlook 2016 - Beim Weiterleiten keine PDF Anhänge mehr - KB4011626 entfernen

Erfahrungsbericht von Deepsys vor 1 TagMicrosoft Office3 Kommentare

Wenn ihr feststellt das ihr beim Weiterleiten von E-Mails keine PDF Anhänge mehr versendent, dann dankt Microsoft. Diese tolle ...

Heiß diskutierte Inhalte
Netzwerke
NTFS-Berechtigung
Frage von Daoudi1973Netzwerke21 Kommentare

Hallo zusammen und frohes neues Jahr (Sorry, ich bin spät dran) Meine Frage: 1- Ich habe einen Ordner im ...

iOS
Einladung vom iphone kalender
Frage von jensgebkeniOS14 Kommentare

Hallo Gemeinschaft, folgendes Problem - immer wenn ich von meinem Iphone einen Termin einztrage und diesem Termin Teilnehmer zuweise, ...

Windows Netzwerk
Drucker isolieren in Windows Domäne
gelöst Frage von lcer00Windows Netzwerk14 Kommentare

Hallo zusammen, habe eine Windows-AD (2012R2) in der es einen Druckerserver gibt. Mittlerweile verliere ich das Vertrauen in die ...

Server-Hardware
Veeam Backup Server stürzt alle paar Tage ab
Frage von Leo-leServer-Hardware12 Kommentare

Hallo Forum, ich habe momentan folgendes Problem. Veeam Backup and Replication 9.5 u2 auf voll gepatchten DL 380 G7 ...