J'archive des fichiers à partir d'un partage réseau à l'aide de PowerShell & robocopy
. Les dossiers peuvent exister ou non, mais s'ils existent, je veux les déplacer vers un autre emplacement. J'essaye d'exécuter une série de commandes robocopy
qui sont prédéfinies dans un fichier CSV. Ce fichier contient également un chemin sur lequel je voudrais lancer une vérification (Test-Path
) pour supprimer les dossiers qui n'existent pas. Ensuite, je peux m'en occuper à une date ultérieure.Impossible de résoudre le jeu de paramètres Invoke-Command - la commande fonctionne correctement en dehors du script
Certaines parties semblent bien fonctionner, mais la Invoke-commande me donne une erreur:
Invoke-Command : Parameter set cannot be resolved using the specified named parameters.
Quand j'ai googlé cette erreur, je dois admettre que je ne comprends pas les réponses qu'ils ne se rapporte pas à mon scénario. La ligne de commande invoke a bien fonctionné quand elle n'était pas dans l'instruction if dans laquelle elle se trouve maintenant.
Ceci est mon code:
$csv = Import-Csv C:\paths.csv
foreach ($folder in $csv) {
$path = $folder.LMCLF #full path to be checked
$command = $folder.robo #this is the column name in the CSV which contains the robocopy command
if (Test-path -Path "$path" -pathtype container) { #check whether path exists
Invoke-command $folder.robo #run the robocopy command from the CSV
} else {
echo $path " Does not exist!"
}
if($LASTEXITCODE) { #check for a robocopy exit code & set relevant message
If (($LASTEXITCODE -eq 0)) {
$RoboCopyMessage = "EXITCODE: 0, Succeeded"
} elseif (($LASTEXITCODE -gt 0) -and ($LASTEXITCODE -lt 16)) {
$RoboCopyMessage = "EXITCODE: 1-15, Warning"
} elseif ($LASTEXITCODE -eq 16) {
$RoboCopyMessage = "EXITCODE: 16, Error"
}
} else {
$RoboCopyMessage = "Robocopy did not work :("
}
Write-Host $RoboCopyMessage " at location: " $folder.LMCLF #some output to the console detailing the robocopy message
$folder.LMCLF + " |==========| ", $robocopyMessage | out-file c:\fail.txt -Append #put the folder & robocopy code into a text file
}
Quelle est la valeur de $ folder.robo'? –
La valeur serait quelque chose comme: Robocopy.exe "W: \ Dossier 1 \ Dossier 2" "Q: \ Dossier 1 \ Dossier 2"/V/S/E/NP/MOVE/R: 3/W: 5 /LOG+:C:\RobocopyBatch6.log –