Benutzer mit den meisten Antworten
Powershell Script und robocopy

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
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-6Hier kann man die Argumente dann als String-Array übergeben, dass man vorher aufbauen kann.
- Als Antwort markiert Denniver ReiningMVP, Moderator Montag, 3. Dezember 2018 13:13
-
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
- Bearbeitet Peddy1st Donnerstag, 22. November 2018 15:56
- Als Antwort markiert Denniver ReiningMVP, Moderator Montag, 3. Dezember 2018 13:13
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-6Hier kann man die Argumente dann als String-Array übergeben, dass man vorher aufbauen kann.
- Als Antwort markiert Denniver ReiningMVP, Moderator Montag, 3. Dezember 2018 13:13
-
-
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. -
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
- Bearbeitet Peddy1st Donnerstag, 22. November 2018 15:56
- Als Antwort markiert Denniver ReiningMVP, Moderator Montag, 3. Dezember 2018 13:13