Я пытаюсь написать сценарий Microsoft PowerShell, который копирует файлы из одного источника в несколько мест назначения параллельно на основе файла конфигурации. Файл конфигурации представляет собой файл CSV, который выглядит следующим образом:
Сервер, тип
сервер1, производство
server2, Staging
Мой скрипт вызывается с одним аргументом (. \ Myscript.ps1 buildnumber), но, похоже, он фактически не выполняет никакого удаления или копирования файлов.
Я уверен, что мой код copy-item и remove-item работает так, как я тестировал их независимо, но я думаю, что это либо проблема с тем, как я использую блоки скриптов, либо, возможно, как я использую start-job.
Может ли кто-нибудь помочь мне понять, почему это не работает?
Спасибо
Бред
<#
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
}
}