raven16 10 Geschrieben 9. Mai 2012 Melden Teilen Geschrieben 9. Mai 2012 Hallo, ich habe gestern das erste Mal PowerShell benutzt und muss jetzt ein Skript schreiben, mit dem ich einen TSM-Server über den TSM-Client abfragen kann. Es gibt auf jedem Client-System eine dsmc.exe, die ich mit PS aufrufen kann, um dort Befehle abzusetzen. Habe die IP des Servers verändert um zu testen, ob er merkt, dass keine Verbindung zum Server besteht. Mit dem Befehl -query access bekomme ich dann folgende Ausgabe: tsm>query access ANS1302E No objects on server match query Unabhängig, ob das jetzt der richtige Befehl ist, um die Verfügbarkeit des TSM-Servers abzufragen, möchte ich gerne wissen, wie ich den Errorcode abfragen kann, um entsprechend darauf reagieren zu können. Ich muss den Exitcode bzw. Fehlermeldung in eine Variable oder sowas schreiben können, um in einem Skript damit arbeiten zu können. Danke schon mal im Vorraus :) Zitieren Link zu diesem Kommentar
Dukel 455 Geschrieben 9. Mai 2012 Melden Teilen Geschrieben 9. Mai 2012 $lastexitcode Was hast du denn mit dem Errorcode vor? Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 9. Mai 2012 Melden Teilen Geschrieben 9. Mai 2012 Hallo, schau mal hier: about_Automatic_Variables $?, $lastexitcode oder $error wären meine Favoriten blub Zitieren Link zu diesem Kommentar
raven16 10 Geschrieben 9. Mai 2012 Autor Melden Teilen Geschrieben 9. Mai 2012 $lastexitcode Was hast du denn mit dem Errorcode vor? Eig. nichts besonderes: ich will nur abfragen, ob der TSM-Client sich mit dem TSM-Server connecten kann über die Console. D.h. ich habe irgendwo die Abfrage und danach eine IF-Verzweigung, um entprechend bei vorhandener oder nicht-vorhandener Konnektivität zu reagieren. Zitieren Link zu diesem Kommentar
raven16 10 Geschrieben 9. Mai 2012 Autor Melden Teilen Geschrieben 9. Mai 2012 (bearbeitet) ...mit dem $lastexitcode konnte ich die Ausgabe des Befehls in die Variable speichern und könnte sie weiterverwenden. Jetzt habe ich aber noch das Problem, dass der Text relativ lang ist: IBM Tivoli Storage Manager Command Line Backup-Archive Client Interface Client Version 6, Release 2, Level 1.0 Client date/time: 09.05.2012 14:11:12 (c) Copyright by IBM Corporation and other(s) 1990, 2010. All Rights Reserved. Node Name: HDEBEKS1073 ANS1017E Session rejected: TCP/IP connection failure Muss prüfen, ob die Ausgabe der letzten Zeile diesen ANS1017E code hat. Kann ich also $lastexitcode auf einem Inhalt untersuchen? Note: $? funktioniert nicht, weil ich immer ein true zurück bekomme Mit $ERROR[7] bekomme ich immerhin die letzte Zeile noch raus bearbeitet 9. Mai 2012 von raven16 Zitieren Link zu diesem Kommentar
Dukel 455 Geschrieben 9. Mai 2012 Melden Teilen Geschrieben 9. Mai 2012 Ich würde $error[-1] nutzen. Schau dir mal .split() an. Zitieren Link zu diesem Kommentar
raven16 10 Geschrieben 9. Mai 2012 Autor Melden Teilen Geschrieben 9. Mai 2012 Ich würde $error[-1] nutzen.Schau dir mal .split() an. Bei $error[-1] habe ich keine Ausgabe, wenn ich das danach mit einem echo ausgebe split schaue ich mir mal an :) Zitieren Link zu diesem Kommentar
Dukel 455 Geschrieben 9. Mai 2012 Melden Teilen Geschrieben 9. Mai 2012 Dann speicher das in eine neue Variable. Zitieren Link zu diesem Kommentar
raven16 10 Geschrieben 9. Mai 2012 Autor Melden Teilen Geschrieben 9. Mai 2012 Dann speicher das in eine neue Variable. So bekomme ich auch kein Output ###TSM-Test-Script #TSM-Console aufrufen cd -path "C:\Program Files\Tivoli\TSM\baclient" $Error = .\dsmc.exe query session #Befehle zum Testen der Verfügbarkeit echo "" echo "Dein letzter Versuch ergab:" $output = $Error[-1] echo $output Der gibt echo $output gar nicht aus sondern beendet das skript einfach. Zitieren Link zu diesem Kommentar
Dukel 455 Geschrieben 9. Mai 2012 Melden Teilen Geschrieben 9. Mai 2012 Hast du den Link von Blub gelesen? KURZBESCHREIBUNG Beschreibt Variablen, von denen Zustandsinformationen für Windows PowerShell gespeichert werden. Diese Variablen werden von Windows PowerShell erstellt und verwaltet. Wieso benutzt du diese Variable dann? Zitieren Link zu diesem Kommentar
raven16 10 Geschrieben 10. Mai 2012 Autor Melden Teilen Geschrieben 10. Mai 2012 Weil ich einen bestimmten Wert aus der Fehlermeldung brauchte und mir vorgeschlagen wurde, das zu benutzen? :D Jetzt bin ich ganz verwirrt. Um aus der Ausgabe den Wert ANS1017E herauszufiltern, habe ich gestern schon folgendes gemacht: $Error = .\dsmc.exe query session $Error = -split $Error[7] if($Error[0] -eq "ANS1017E") { echo "TSM-Connection Error" $CT_ERROR = 1 } else { echo "No TSM-Connection Error" $CT_ERROR = 0 } Das funktioniert auch so jetzt, auch wenn es jetzt nicht vielleicht die eleganteste Lösung ist. Zitieren Link zu diesem Kommentar
Dukel 455 Geschrieben 10. Mai 2012 Melden Teilen Geschrieben 10. Mai 2012 Du sollst $error nicht als Variable nutzen. Das ist eine Automatische Variable. Nutze z.B. $output. Zitieren Link zu diesem Kommentar
raven16 10 Geschrieben 10. Mai 2012 Autor Melden Teilen Geschrieben 10. Mai 2012 Du sollst $error nicht als Variable nutzen. Das ist eine Automatische Variable.Nutze z.B. $output. Also funktioniert es auch an dieser Stelle mit einer anderen Variable wie $output $output = .\dsmc.exe query session Oder was meinst du? Ich bin halt blutiger Anfänger :rolleyes: Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.