none
Ausgabe von Befehlen RRS feed

  • Frage

  • Hallo zusammen,

    ich habe besonders mit komplexen Powershell-Gebilden Probleme. Daher möchte ich etwas tun, was ich schon bei Batch intensiv nutze: Ich lasse mir dort Befehle ausgeben (und auch ins Log schreiben), bevor ich sie ausführe. Z.B.

    set cmd=cacls %Pfad% /T /E /C /G F:Administrator

    echo %cmd%

    %cmd%

    Da evtl. die Variable %Pfad% in diesem Beispiel einen ungültigen Pfad enthält, möchte ich gerne den gesamten Befehl mit aufgelöster Variable in der Ausgabe/im Log haben. Denn nur dann kann ich vernünftig Fehlerbehebung betreiben. Alle meine BAT-Scripte laufen so.

    Aber meine Versuche, selbiges bei der Powershell zu tun, scheitern kläglich. Ich weise das Powershell-CMD einer Variablen zu, gebe sie aus und kann sie auch ausführen. Aber bei der Ausgabe sind keinerlei Variablen aufgelöst. Und das ist gerade bei komplexen Powershell-Konstrukten extrem ungünstig.

    Also: Wie bekommt man solch eine Ausgabe hin?

    Danke und Gruß

    Michael

    Donnerstag, 23. Juli 2015 13:31

Antworten

  • Powershell hat da noch mehr in Petto. Zum einen kannst du bei sehr vielen Befehlen den Parameter "-whatif" angeben, wodurch dir ein CMDlet detailiert anzeigt was es genau tun würde. Auch vielleicht interessant, du kannst ein komplettes Protokoll einer Powershell Sitzung aufzeichnen, mit Start-Transcript.

    Grüße, Denniver


    Blog: http://bytecookie.wordpress.com

    Kostenloser Powershell Snippet Manager v3: Link
    (Schneller, besser + einfacher scripten.)

    Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
    Warum das Ganze? Hier gibts die Antwort.

    Mittwoch, 29. Juli 2015 12:11
    Moderator

Alle Antworten

  • Hi Michael,

    sollte eigentlich so funktionieren:

    z.B.
    
    # Variablen definieren
    $pfad = "C:\Programm"
    $Befehl = icacls $pfad /grant Administrator:(OI)(CI)F
    
    # Befehl in Logdatei ausgeben
    Add-Content -Path <Zielpfad>\<Logdatei>.log -Value $Befehl


    Gruß

    Ben

    MCSA Windows 8 (.1) MCSA Windows Server 2012 (R2)

    Wenn Dir meine Antwort hilft, markiere sie bitte entsprechend als Antwort! Danke! :-)

    Hinweis: Meine Posts werden "wie besehen" ohne jedwede Gewähr bereitgestellt, da menschliche, technische und andere Fehler nicht ausgeschlossen werden können.

    Donnerstag, 23. Juli 2015 14:23
  • Powershell hat da noch mehr in Petto. Zum einen kannst du bei sehr vielen Befehlen den Parameter "-whatif" angeben, wodurch dir ein CMDlet detailiert anzeigt was es genau tun würde. Auch vielleicht interessant, du kannst ein komplettes Protokoll einer Powershell Sitzung aufzeichnen, mit Start-Transcript.

    Grüße, Denniver


    Blog: http://bytecookie.wordpress.com

    Kostenloser Powershell Snippet Manager v3: Link
    (Schneller, besser + einfacher scripten.)

    Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
    Warum das Ganze? Hier gibts die Antwort.

    Mittwoch, 29. Juli 2015 12:11
    Moderator
  • Hi Ben,

    Danke für die Antwort. Ich habe es an einem ähnlich einfachen Beispiel ausprobiert. Es hat funktioniert. Jetzt werde ich mal einige komplexe Sachen testen - v.a. gepipte Sachen.

    Gruß

    Michael

    Mittwoch, 5. August 2015 11:53