none
Powershell Script und robocopy RRS feed

  • Frage

  • Guten Tag,

    kann man im Powershell Script Parameter in einer Variablen definieren und beim robocopy Aufruf in Job verwerten?

    Mein Versuch

    $Para1  = "/TEE /mir /MT:128 /V"

    robocopy $Quelle1 $ZielVZ\"Users\walte\AppData\Roaming\LibreOffice\4\" /JOB:$Para1 /unilog:$LogVZ/text.log /np

    funktioniert nicht.

    Wahrscheinlich geht das nur in einer Datei, anstatt in einer Variablen, oder ?

    Gruß

    piano1311

    Dienstag, 20. November 2018 13:19

Antworten

  • Jeder Parameter benötigt eine einzelne Variable.

    Alternativ geht dann auch Start-Prozess:
    https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/start-process?view=powershell-6

    Hier kann man die Argumente dann als String-Array übergeben, dass man vorher aufbauen kann.

    Dienstag, 20. November 2018 14:24
  • Also du kannst Dir deinen Befehl in einer Zeichenkette zusammenbauen

    $Para1  = "/TEE /mir /MT:128 /V"
    $command = "robocopy $para1"
    

    anschliessend kannst du mittels

    invoke-expression $command

    oder mittels & $command

    das Kommando ausführen. wichtig ist beim Zusammenbauen des Befehls doppelte Anführungszeichen zu verwenden. diese expandieren den Inhalt einer variablen.



    regards Thomas Paetzold visit my blog on: http://sus42.wordpress.com


    Donnerstag, 22. November 2018 15:51

Alle Antworten

  • Jeder Parameter benötigt eine einzelne Variable.

    Alternativ geht dann auch Start-Prozess:
    https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/start-process?view=powershell-6

    Hier kann man die Argumente dann als String-Array übergeben, dass man vorher aufbauen kann.

    Dienstag, 20. November 2018 14:24
  • Hi,

    du musst die Anführungszeichen anders setzen:

    robocopy "$Quelle1" "$ZielVZ\Users\walte\AppData\Roaming\LibreOffice\4\" /JOB:"$Para1" /unilog:"$LogVZ/text.log" /np

    Dann interpretiert Robocpopy die Varriablen als String.

    Gruß,

    B.Sauer

    Mittwoch, 21. November 2018 08:43
  • ich nutze es schon länge so und es funktioniert

        $quel = $env:USERPROFILE + "\Documents\"
        $Ziel = "\\server\profiles\" + $env:USERNAME
       
        robocopy *.* $quel $ziel /MIR /XF desktop.ini /R:1 /W:1


    Chris

    Donnerstag, 22. November 2018 13:42
  • Das Problem ist die Interpretation der Argumente.
    Ein Programm bekommt ein Argument-Array übergeben.

    Die Variable $Para1 wird aber nicht in einzelne Argumente zerlegt sondern als 1 Argument übergeben und das kennt robocopy nicht.
    Daher muss man dann den Umwweg über Start-Process gehen um selber ein Array von Argumenten festlegen zu können.

    Donnerstag, 22. November 2018 15:49
  • Also du kannst Dir deinen Befehl in einer Zeichenkette zusammenbauen

    $Para1  = "/TEE /mir /MT:128 /V"
    $command = "robocopy $para1"
    

    anschliessend kannst du mittels

    invoke-expression $command

    oder mittels & $command

    das Kommando ausführen. wichtig ist beim Zusammenbauen des Befehls doppelte Anführungszeichen zu verwenden. diese expandieren den Inhalt einer variablen.



    regards Thomas Paetzold visit my blog on: http://sus42.wordpress.com


    Donnerstag, 22. November 2018 15:51