Jump to content

raven16

Members
  • Gesamte Inhalte

    14
  • Registriert seit

  • Letzter Besuch

Beiträge erstellt von raven16

  1. Und mal wieder aufs Neue...Ich fühl mich schon langsam wie eine Nervensäge :D

     

    Dieses Mal scheitert es bei mir mit dem Verändern von XML-Dateien.

    Habe diese XML-Datei per Skript angelegt - hat alles wunderbar geklappt:

    <ALSaT>
      <dateien>
         <config>C:\ALSaTtbkbval\tbkbval.xml</config> 
         <lock>C:\ALSaTtbkbval\data\tbkbval_lock.xml</lock> 
      </dateien>
      <paths>
         <log>C:\ALSaT\tbkbval\log</log> 
      </paths>
      <errors>
         <ct>0</ct> 
      </errors>
    </ALSaT>
    

    Jetzt würde ich gerne den Wert von <ct>0</ct> am liebsten verändern, indem ich ihn um +1 erhöhe.

    Mein PowerShell-Buch ist mir da leider keine große Hilfe.

    Wie man einzelne Attribute einließt, ist noch relativ einfach aber dann ändern und wieder speichern habe ich noch nicht ganz verstanden.

     

    Bis jetzt habe ich mir dies zusammengereimt, aber dies funktioniert noch nicht so ganz. Den Wert von 0 auf 1 zu erhöhen klappt schon mal. Den aber dann wieder genau an der gewünschten Stelle zu speichern, da scheitert es noch:

    #CT_error in der XML-Config um 1 erhöhen
    [int] $CT_ERROR = $config.ALSaT.errors.ct
    $CT_ERROR ++
    [string] $config.ALSaT.errors.ct = $CT_ERROR
    $config.Save($config.ALSaT.errors.ct)
    

    $config ist die xml-datei, dich ich vorher mit

    $global:config =

     (get-Content -Path $path)

    geladen habe.

    $path = Ort mit Dateibezeichnung.xml wo sich die Config-XML befindet.

  2. Aso :)

     

    Das hatte ich auch irgendwo gelesen mit Params aber als bis jetzt ging das mit $args[] wunderbar.

    in $args[0] hat der tbkbval geschrieben und in $args[1] den buchstaben J

     

    Habe jetzt eine andere Lösung von nem Arbeitskollegen vorgeschlagen bekommen und jetzt funktionierts, so wie ich es wollte.

     

    Zur Info:

    Habe jetzt den Scheduled-Task nicht auf mein Domainen-Adminaccount laufen, sondern auf einen extra dafür erstellten Maschinenaccount.

  3. Ne das funktioniert leider noch nicht so ganz, es scheitert noch an den Parametern.

     

    Mein PS-Skript, womit ich ALSaT.ps1 aufrufe, sieht so aus:

    cd C:\ALSaT\
    Start-Job -FilePath ".\ALSaT.ps1" -ArgumentList "tbkbval","J"
    #.\ALSaT.ps1 tbkbval J
    

    Die kommentierte letzte Zeile funktioniert soweit, aber das Skript wird durch den Windows Task-Scheduler alle 2 Minuten gestartet und es soll nicht immer ein Fenster geöffnet werden :(

     

    Im Skript ALSaT.ps1 lese ich dann die Parameter so ein (vllt. ist da ja noch der Hund begraben?)

    $global:instanz = $args[0]
    $global:location = $args[1] + ":\Oracle\admin\" + $instanz + "\arch\"
    

  4. 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.

  5. 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.

  6. ...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

  7. 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 :)

×
×
  • Neu erstellen...