我正在嘗試編寫一個基於配置文件將文件從單個源複製到多個目標的Microsoft PowerShell腳本。配置文件是一個CSV文件,該文件是這樣的:(\ myscript.ps1 buildnumber)將文件從一個源複製到多個目標並行
服務器,類型
server1的,生產
服務器2,分期
我的腳本是用一個參數調用,但它似乎沒有實際做任何刪除或複製文件。
我確定我的複製項目和刪除項目代碼的工作原理是因爲我已經獨立測試過它們,但我認爲它的問題在於我如何使用腳本塊或者我如何使用啓動工作。
任何人都可以幫助我理解爲什麼這不起作用嗎?當它從開始的在職稱爲
感謝 布拉德
<#
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
}
}
我把這個作爲評論或建議。你可能想看看模塊https://github.com/nightroman/SplitPipeline,這使得這類工作更容易。如果您的SCV包含大量要並行處理的數據(同時創建多個PS作業可能效率較低),則此功能尤其有用。 – 2012-10-15 03:57:29