none
Powershell Warum wird meine Variable nicht angenommen? RRS feed

  • Frage

  • $pdf = Get-ChildItem C:\users\deruser\desktop\110 -Filter *.pdf -Recurse | % { $_.FullName }
    Start-Process PDFXCview.exe { /printto "Printer110_test" $pdf}

    Weiß jemand warum meine Variable in den Start-Process Befehl nicht übetragen wird?

    Vielen Vielen Dank für die Hilfe


    • Bearbeitet Julian Bachmann Freitag, 1. April 2016 13:32
    • Typ geändert Teodora MilushevaModerator Montag, 4. April 2016 06:31 Die Threads die keine Aktivität haben, werden als Diskussion geändert. Das machen wir, um die Suche in dem Forum zu verbessern. Sie können den Typ jede Zeit ändern.
    • Typ geändert Denniver ReiningMVP, Moderator Montag, 4. April 2016 13:16 2 Tage inaktivität sind nicht unüblich, besonders über Wochenende.
    Freitag, 1. April 2016 12:47

Antworten

  • Hallo,

    also ich drucke PDF-Dokumente hiermit:

    foreach($p in $pdfs)
        {
            #starte Ausdruck-Prozess des Pdfs, warte und schließe Prozess wieder
            Start-Process –FilePath $p.fullname –Verb Print -PassThru | %{sleep 5;$_} | kill
        }

    Das erklärt zwar nicht dein Variablenproblem, aber vielleicht hilft es ja.

    Ansonsten müsstest du wahrscheinlich nochmal in der Dokumentation für den PDFXCView nachsehen, wie man die Parameter übergeben muss.

    Viele Grüße

    Christoph

    Dienstag, 5. April 2016 07:31

Alle Antworten

  • Hallo,

    ich gehe mal davon aus, dasss der erste Befehl mehrere PFD-Dateinen finden, somit ist deine Varaibale $PDF ein Array. Die Frage ist ob PDFXCview.exe damit klar kommt.

    Du konenntes folgendes machen.

    $pdf = Get-ChildItem C:\users\deruser\desktop\110 -Filter *.pdf -Recurse | % { $_.FullName }
    foreach ($PDFFile ind $pdf) {
    	Start-Process PDFXCview.exe { /printto "Printer110_test" $PDFFile}
    }

    Beste Gruesse
    brima

    • Als Antwort vorgeschlagen Lennart Montag, 4. April 2016 13:19
    • Nicht als Antwort vorgeschlagen Lennart Montag, 4. April 2016 13:20
    Montag, 4. April 2016 12:05
  • Hi,

    brima liegt fast richtig. Du bekommst nicht nur einen simplen Array, sondern ein Objekt zurück.

    $PDF stellt in deinem Fall nur den Dateinamen dar:

    PS D:\Testing> $files = gci D:\Testing -filter *.txt
    PS D:\Testing> foreach ($file in $files){ write-host $file}
    Neues Textdokument (2).txt
    Neues Textdokument (3).txt
    Neues Textdokument.txt
    PS D:\Testing>

    Das wird der PDFViewer nicht mögen, dem wirst du den vollen Pfad zur Datei mitgeben müssen:
    PS D:\Testing> $files = gci D:\Testing -filter *.txt
    PS D:\Testing> foreach ($file in $files){ write-host $file.FullName}
    D:\Testing\Neues Textdokument (2).txt
    D:\Testing\Neues Textdokument (3).txt
    D:\Testing\Neues Textdokument.txt
    PS D:\Testing>

    Montag, 4. April 2016 13:27
  • Hallo,

    also im Objekt $PDF steht schon der FullName je PDF-Datei drin, den selektiert er ja mit :

    | % { $_.FullName }

    Beste Gruesse
    brima

    Montag, 4. April 2016 13:41
  • Hallo ihr beiden,

    danke für eure Antworten, leider hat beides nicht funktioniert.

    Der PDF-Viewer nimmt die Variable nicht als Pfad an. Hättet ihr vielleicht noch eine Idee?

    Danke und Gruesse

    Dienstag, 5. April 2016 07:02
  • Hallo,

    also ich drucke PDF-Dokumente hiermit:

    foreach($p in $pdfs)
        {
            #starte Ausdruck-Prozess des Pdfs, warte und schließe Prozess wieder
            Start-Process –FilePath $p.fullname –Verb Print -PassThru | %{sleep 5;$_} | kill
        }

    Das erklärt zwar nicht dein Variablenproblem, aber vielleicht hilft es ja.

    Ansonsten müsstest du wahrscheinlich nochmal in der Dokumentation für den PDFXCView nachsehen, wie man die Parameter übergeben muss.

    Viele Grüße

    Christoph

    Dienstag, 5. April 2016 07:31
  • Zeig doch mal deinen Code.
    Mittwoch, 6. April 2016 13:28