Je tente d'écrire un microsoft powershell script qui copie des fichiers d'une source unique vers plusieurs destinations en parallèle en fonction d'un fichier de configuration. Le fichier de configuration est un fichier CSV qui ressemble à ceci :
Serveur, Type
serveur1,Production
serveur2,Staging
Mon script est appelé avec un argument (. \myscript.ps1 buildnumber), mais il ne semble pas effectuer de suppression ou de copie de fichiers.
Je suis sûr que mon code copy-item et remove-item fonctionne car je les ai testés indépendamment mais je pense que c'est soit un problème avec la façon dont j'utilise les blocs script ou peut-être la façon dont j'utilise start-job.
Quelqu'un peut-il m'aider à comprendre pourquoi cela ne fonctionne pas ?
Merci Brad
<#
File Deployment Script
#>
#REQUIRES -Version 2
param($build)
$sourcepath = "\\server\software\$build\*"
$Config = import-csv -path C:\config\serverlist.txt
$scriptblock1 = {
$server = $args[0]
$destpath1 = "\\$server\share\Software Wizard\"
$destpath2 = "\\$server\share\Software Wizard V4.9XQA\"
remove-item "$destpath1\*" -recurse -force
remove-item "$destpath2\*" -recurse -force
copy-item $sourcepath -destination $destpath1 -recurse -force
copy-item $sourcepath -destination $destpath2 -recurse -force
}
$scriptblock2 = {
$server = $args[0]
$destpath = "\\$server\share\Software Wizard\"
#remove-item "$destpath\*" -recurse -force
copy-item $sourcepath -destination $destpath -recurse -force
}
foreach ($line in $Config) {
$server = $line.Server
$type = $line.Type
if ($type -match "Staging") {
Write-Host "Kicking job for $server off"
start-job -scriptblock $scriptblock2 -ArgumentList $server
}
if ($type -match "Production") {
Write-Host "Kicking job for $server off"
start-job -scriptblock $scriptblock2 -ArgumentList $server
}
}