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

Frage Entwicklung

GELÖST

Powershell Konsolen Ausgabe weiterverarbeiten

Mitglied: MCITPSA

MCITPSA (Level 1) - Jetzt verbinden

06.01.2012 um 10:34 Uhr, 6077 Aufrufe, 11 Kommentare

Hallo zusammen,
vorab ich bin "Frischling" in sachen Powershell und seh den Wald vor lauter Bäumen derzeit nicht.

Ich habe derzeit ein Script mit dem ich diverse Dienste neustarte / ordner umbenenne / WMI rebuild laufen lasse.
Nun möchte ich abhängig vom ergebniss einer Prüffunction anhand des ausgegeben Wertes weiter machen.

Also in etwa so:
01.
if ($(test-wmirepository).Status -eq "WMI repository is consistent") 
02.
03.
   break; 
04.
05.
ELSEIF 
06.
07.
wmi-resetrepository -path -force 
08.
09.
 
Die beiden Functions existieren und funktionieren auch nur wie kann ich das anhand des o.g. beispiels nun realisieren?
Bzw. Wie kann ich die Consolenausgabe in eine Variabel umleiten und dann mit einer If abfrage die variable auf Ihren Inhalt prüfen?

Viele Grüße und vorab danke
Mitglied: LordXearo
06.01.2012 um 14:38 Uhr
Hallo,

ich glaube ich verstehe die Frage nicht so ganz.

Wenn in deinem ersten Fall das if "true" ist, dann setz dort eine Variable ein $WMIErgebnis = "Alles in Ordnung" rein, und verwende es danach für die nächste if Abfrage. Du kannst auch mit der Variable $? sehen, ob der letzte Befehl erfolgreich ausgeführt wurde oder nicht.

Gruß

Xearo
Bitte warten ..
Mitglied: MCITPSA
06.01.2012 um 14:52 Uhr
Hallo LordXearo,

ok ich sehe selbst das ich mich wohl ein wenig undeutlich ausgedrückt habe. Sorry dafür.

Erstmal danke für Deinen Tip. Versuche ich auf jeden fall mal.

Ich versuch es nochmal zu erklären. Hoffe das es diesesmal verständlicher wird

Ich habe eine Funktion "test-wmirepository" diese mir auf der console als Meldung " WMI repository consistent" oder eben "WMI repository not consistent".
Jetzt wollte ich praktisch die Meldung in eine Variable packen und dann den inhalt der Variable mit dem If Statement vergleichen um dann eben entsprechend weiter zu arbeiten.

Zu deutsch ...
Wenn meldung "WMI repository consistent" dann mach X ansonsten mach Y

Viele Grüße
MCITPSA
Bitte warten ..
Mitglied: LordXearo
06.01.2012 um 15:16 Uhr
Hallo,

genau das kannst du ja auch wie ich beschrieben habe tun.

01.
if ($(test-wmirepository).Status -eq "WMI repository is consistent") 
02.
03.
   $Status_ok=1 
04.
05.
ELSEIF 
06.
07.
wmi-resetrepository -path -force 
08.
09.
 
10.
if($Status_ok -eq = 1){ 
11.
mach was 
12.
}
Gruß

Xearo
Bitte warten ..
Mitglied: MCITPSA
06.01.2012 um 16:24 Uhr
Danke für den Hinweis.
Werde es am Wochenende wieter versuchen.

Imho hab ich dazu jetzt keinen Kopf mehr dazu

Für weitere Tips / Hinweise in die richtige richtung bin ich dankbar

Nice weekend
MCITPSA
Bitte warten ..
Mitglied: MCITPSA
09.01.2012 um 13:47 Uhr
Hallo zusammen,

leider haut die oben genannte Lösung nicht hin.

Die Console sagt mir weiterhin meine Meldung aber die if abfrage mag nit

Ich füge nunmal die eine function hier ein:
01.
function test-wmirepository { 
02.
 param( 
03.
  [string]$path 
04.
 )             
05.
 
06.
 if ($path) { 
07.
   if (-not(Test-Path $path)){ 
08.
    Throw "$path not found" 
09.
10.
   else { 
11.
    $path 
12.
    $exp = "winmgmt /verifyrepository $path" 
13.
14.
15.
 else { 
16.
  $exp = "winmgmt /verifyrepository" 
17.
18.
 Invoke-Expression -Command $exp 
19.
 
20.
}
Diese Funktion rufe ich dann weiter unten im script eben auf.
Der aufruf der Funktion funktioniert wie bereits gesagt nur eben das weiterarbeiten mit dem ergebniss /der Rückmeldung.

Im Script habe ich nun folgenden Code verwendet:
01.
If ($(test-wmirepository).Status -eq "WMI repository is consistent") 
02.
03.
			$Status_ok = 1 
04.
05.
	ELSE 
06.
		 
07.
08.
			Write-Host "Error" -F Red 
09.
10.
	 
11.
	if($Status_ok -eq = 1){  
12.
Write-Host "mach was" 
13.
14.
break; 
15.
}
Irgendjemand eine Idee?
Anzumekren sei noch, das dass winmgmt /verifyrepository ein normaler cmd befehl ist (Externes programm demnach) nur irgendwie bringt mich das auch nicht richtig weiter.

Viele Grüße
MCITPSA
Bitte warten ..
Mitglied: LordXearo
09.01.2012 um 14:48 Uhr
Hallo nochmal,

ich mache nicht sehr oft Skripte und habe das was ich geschrieben habe auch nicht getestet bzw. überhaupt überprüft. Aber Syntax mäßig richtig wäre es erstmal so.
01.
If ($(test-wmirepository).Status -eq "WMI repository is consistent") 
02.
03.
			$Status_ok = 1 
04.
05.
	ELSE 
06.
		 
07.
08.
			Write-Host "Error" -F Red 
09.
10.
if($Status_ok -eq 1){  
11.
Write-Host "mach was" 
12.
}
Bitte warten ..
Mitglied: MCITPSA
09.01.2012 um 15:14 Uhr
Danke nochmals LerdXearo,

ich habe ja auch zwischenzeitlich ein wenig weiter experimentiert nur leider mit dem gleichen ergebniss und mehr code.
Theoretisch müsste Dein vorgeschlagener weg ja zur gewünschten Lösung führen. Tut er nur leider nicht.

Ich denke das mein "Problem" wohl am übergeben der "....Status -eq "WMI....." Nachricht schon klemmt.
Leider ist mein Powershellwissen, wenn man es so nennen darf, noch lange nicht soweit um hier ohne "Hilfe" zurechtzukommen.

Vielleicht gehe ich mein "Werk" auch falsch an und versuche ganz und gar total falsch den parameter/status auszuwerten.
Leider habe ich bis dato auch nichts in der richtung im web finden können.

Wie man interne Powershellbefehle weitergibt ja aber externe?

Viele Grüße
MCITPSA
Bitte warten ..
Mitglied: LordXearo
09.01.2012 um 15:40 Uhr
Ja eigentlich müsstest du es anders machen. In deiner Funktion müsstest du bereits als Rückgabewert Status_ok = 1zurückgeben, wenn die Funktion sauber durchgelaufen ist.

Machst du dich am besten nochmal über Rückgabewerte schlau. Wenn es wieder hackt, kannst du gerne schreiben.
Bitte warten ..
Mitglied: MCITPSA
10.01.2012 um 08:01 Uhr
So ich hab die Lösung gefunden.
01.
$LASTEXITCODE
ist die Lösung
Simple aber manchmal sieht man den Wald vor lauter Bäumen nicht mehr

Mein erster funktionierender Lösungsansatz:
01.
test-wmirepository  
02.
	$LASTEXITCODE                         #<-- 0 = OK / 1 NOK 
03.
	If ($($LASTEXITCODE) -eq "0") # Wenn status OK dann 
04.
05.
 
06.
			Write-Host "Everything working fine!" 
07.
08.
	ELSE 
09.
10.
			Write-Host "Something Wrong!!!"		 
11.
12.
	If ($($LASTEXITCODE) -eq "1") #<-- Wenn Status NOK 
13.
14.
			Write-Host "ATTENTION" 
15.
16.
	 
17.
	 
18.
break; 
19.
.... 
20.
 
Danke für den ganzen "hirnschmalz" und einsatz den ich hier abverlangt habe
Bitte warten ..
Mitglied: LordXearo
10.01.2012 um 08:45 Uhr
Schön das du es geschafft hast.
So ist es sicher besser als wenn ich dir die Arbeit abgenommen hätte.

ps: Die Variable $? aus meinem ersten Post ist das gleiche wie $Lastexitcode ;)
Bitte warten ..
Mitglied: MCITPSA
10.01.2012 um 15:29 Uhr
Danke Dir nochmals.

Ja das mit dem Alias in der Powershell ist noch nicht ganz durchgedrungen.
Dein eintrag mit dem $? hatte ich versucht nur wahrscheinlich noch falsch gewertet

Nun wollte ja auch keine Gesammtlösung denn damit kommt man nicht weiter wenn man ein wenig Code schreiben möchte
Aber der berühmte Wink mit dem Zaunpfahl ist mehr Wert wie alles andere
Gut hat mich jetzt ca 2 tage gekostet (Shame on me) aber das ergebniss zählt.

Viele Grüße
MCITPSA
Bitte warten ..
Ähnliche Inhalte
Entwicklung
Powershell in Listbox ausgabe anpassen
gelöst Frage von LyonADEntwicklung3 Kommentare

Guten Tag zusammen Ich möchte das bei der Listboxausgabe nur die IP und der Ordner(\\XX.X.XX.X\Ordner) angezeigt wird. Jedoch werden ...

Batch & Shell
Powershell: Vernüftige Ausgabe der Daten
gelöst Frage von ralfkauskBatch & Shell2 Kommentare

Hallo zusammen Ich brauche mal ein wenig Unterstützung. Ich muss Daten aus dem AD Abgreifen, und das mache ich ...

Windows Server
Powershell Ausgabe formatieren
gelöst Frage von makaroniWindows Server16 Kommentare

Guten Morgen zusammen, ich lesen aus einer Active Directory via Powershell User aus einer Gruppe aus und speicher diese ...

Batch & Shell
Powershell - Formatierung der Ausgabe
gelöst Frage von ScrollerBatch & Shell2 Kommentare

Hi ich habe ein script dass versch. Infos über PC's ausgibt. zb: Servicepack: Service Pack 4 Architektur: 64-Bit RAM ...

Neue Wissensbeiträge
Datenschutz

Teamviewer kommt für IoT-Geräte wie den Raspberry Pi

Information von magicteddy vor 1 StundeDatenschutz

Moin, jetzt werden IoT Geräte endgültig zur Wanze? Anscheinend kann man auf einem Dashboard seine Geräte visualisieren Ich stelle ...

Microsoft

Letzte Updates für Win10 und Server2016 müssen bei Bedarf über den Update catalogue in den WSUS importiert werden!

Tipp von DerWoWusste vor 5 StundenMicrosoft1 Kommentar

automatisch kommt da nichts an im WSUS und auch nicht im SCCM. Siehe Hinweise zum Bezug der jeweils neuesten ...

Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 3 TagenLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 3 TagenTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Preis für Wartungsvertrag ok?
Frage von a-za-zNetzwerkmanagement13 Kommentare

Hallo! Mal ne Frage, weil ich mich mit dem akzeptablen Preis für einen Reaktionszeitvertrag nicht auskenne. Meine Firma hat ...

Windows Netzwerk
Ist ein Portforwarding auf einen PC ohne lauschendes Programm ein (großes) Sicherheitsproblem?
Frage von PluwimWindows Netzwerk10 Kommentare

Hallo zusammen, zur Fernwartung eines Rechners an einem anderen Ort nutze ich VNC. Da dieser Rechner einfach nur eine ...

SAN, NAS, DAS
Wer kennt sich mit QNAP und CISCO aus ?
gelöst Frage von MachelloSAN, NAS, DAS10 Kommentare

Hallo Zusammen hier im Forum, Ich habe ein QNas 451+ und dieses NAS hat zwei GBit Lan Adapter die ...

Router & Routing
Firewall Homeoffice
Frage von leon123Router & Routing6 Kommentare

Hallo zusammen, ich möchte meine beiden Rechner von der Firma vom Heimbereich abtrennen. Die Fritzbox kann leider nur den ...