Jump to content

Bernd W

Members
  • Gesamte Inhalte

    9
  • Registriert seit

  • Letzter Besuch

Beiträge erstellt von Bernd W

  1. Hab da nochwas :).  Wie kann ich denn mit Select-Object nur den Wert anzeigen lassen zB.

     

    get-ADdomain | select-object DistinguishedName

    statt:

    DistinguishedName

    -----------------

    DC=d0*****,DC=local

     

    nur:

    DC=d0*****,DC=local

    Ich möchte nur diesen Wert in eine Variable einsetzen, damit ich später ein universales Script habe, um Anzahl der User und Usernamen in mehreren Domänen auszulesen. Bin leider noch ein totaler Noob:D und googeln hat auch nicht geholfen. Format-Wide bringt ein fast perfektes Ergebnis, macht mir nur eine Spalte dazwischen. Ist Select-Object überhaupt richtig?

     

    Hallo MoC88,

    select-object ist genau der richtige Befehl dafür.

    Verwende den Parameter -ExpandProperty (statt -Property)

    get-ADdomain | select-object -ExpandProperty DistinguishedName

  2. @Cybquest: Ich hab'a auch noch mal getestet. Es sit so wie ich schon geschrieben hatte. Vielleicht liegt's an der Umgebung Win XP Powershell 2.0 - wie auch immer... die eigentliche Frage war ja prinzipiell beantwortet.

     

    Errorvariable: Es ist definitiv per Definition dass es nur funktioniert wenn sie ohne das Dollarzeichen angegeben wird.

    Bsp:

    # Korrekter Befehl
    dir C:\gibtsnicht -ErrorVariable MeinFehler
    
    # Variableninhalt ausgeben
    $meinFehler
    
    #Inhalt von $MeinFehler
    Get-ChildItem : Der Pfad "C:\gibtsnicht" kann nicht gefunden werden, da er nicht vorhanden ist.
    Bei Zeile:1 Zeichen:4
    + dir <<<<  C:\gibtsnicht -ErrorVariable MeinFehler
       + CategoryInfo          : ObjectNotFound: (C:\gibtsnicht:String) [Get-ChildItem], ItemNotFoundException
       + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand
    
    
    # Variable leeren
    $MeinFehler = $null
    # Falscher Befehl
    dir C:\gibtsnicht -ErrorVariable [color="Red"][b]$[/b][/color]MeinFehler
    
    # Variableninhalt ausgeben
    $meinFehler
    
    #Inhalt von $MeinFehler
    (Es wird kein Inhalt ausgegeben)
    

     

    Gruß

    Bernd

  3. Hallo Pet7,

    ich fasse mal zusammen:

    Du startest aus einem Batchfile heraus ein Powershell Skript. In dem PS Skript führst Du Befehle aus, z.B. kopieren, die evtl. schief gehen können. In Abhängigkeit dessen willst Du in Deinem Batchfile mit Hilfe von %errorlevel% darauf reagieren.

     

     

    CMD Test-Batch "test.bat" (wie in dem Link von cybquest beschrieben):

    
    @echo off
    powershell -noprofile -command "& {"d:\Test\test.ps1"; exit $Lastexitcode}"
    echo Rueckgabewert: %errorlevel%
    
    

     

     

    Powershell Test-Skript "test.ps1":

    
    $ErrorActionPreference = 'Stop'
    trap {
    "Ein Fehler ist passiert"
    exit 5
    }
    
    Copy-Item 'C:\Temp\gibtsnicht.txt' 'c:\Temp\a'
    
    

     

     

    Die Variable $ErrorActionPreference muss auf Stop gestellt werden damit der Fehler nicht von cmdlet selbst sondern von der Trap behandelt wird. Das gilt dann für alle cmdlets. Alternativ kannst du beim jeweiligen cmdlet auch den Parameter -Erroraction 'stop' anhängen.

    In der Trap wird das Skript mit dem Exitcode, im Beispiel 5, verlassen.

     

     

    Hoffe das hilft Dir

    Gruß

    Bernd

  4. Hallo Pet7,

    mit Powersell geht das auf jeden Fall:

    1. Kannst Du alles was du im Batch aufrufst auch direkt in Powershell aufrufen z.B. robocopy.exe und dann mit $Lastexitcode arbeiten

    2. Kannst Du die Variable $? aus werten die True zurückgibt wenn der Letzte Befehl erfolgreich war

    3. Kannst Du $error auswerten

    4. Kannst Du sog. Traps oder Try-Catch Blöcke (ab PS V2.0) verwenden um Fehler abzufangen bzw. darauf zu reagieren

     

    Wenn Du deinen Code mal reinstellst kann ich sicher auch konkreter werden.... .

     

    Bruß

    Bernd

     

    PS: Schau mal bei xxxx rein

     

    [edit]

    Links bitte nur, wenn Sie konkret der Problemlösung des To's dienen, nicht um deine Seite zu promoten

    Danke für dein Verständnis

    blub

×
×
  • Neu erstellen...