使用包含路径\文件和有效目标的文本文件部署到多个服务器
问题描述:
Powershell大师,你能帮助我一个有趣的脚本吗? :)使用包含路径文件和有效目标的文本文件部署到多个服务器
有在我公司服务器5台,全部采用相同的目录结构。我有一个文件,servers.txt,布置2个字段。首先是服务器的名称,其次是是否应该部署到此次运行。例如....
MyServer1 Yes
MyServer2 No
MyServer3 No
MyServer4 Yes
MyServer5 Yes
第二个文件,files.txt,包含将被部署到“是”服务器上的文件(S)的名称,复制到在适当的目录服务器,远离“根”的dirs。 (对于服务器的根是\ SERVER_NAME \项目\ MyProject的)实施例用于files.txt
file1.aspx
bin\myproject.dll
css\style1.css
secure\file2.aspx
secure\file3.aspx
因此,例如,BIN \ myproject.dll将被复制到\ MYSERVER1 \项目\ MyProject的\ BIN \ myproject的.dll,但仅适用于servers.txt中标记为“是”的服务器。
我想写一个脚本来做这个部署,阅读这两个文件和做副本。任何可以协助的PowerShell大师?我将非常感激!
答
这是未经测试,但看看它是否工作。它假定files.txt
,servers.txt
和所有源文件与脚本文件本身位于同一目录中。
$ServerList = Import-Csv -Path $PSScriptRoot\servers.txt -Delimiter ' ' -Header 'Name', 'CopyFiles';
$FileList = Get-Content -Path $PSScriptRoot\files.txt;
foreach ($Server in $ServerList) {
if ($Server.CopyFiles -eq 'Yes') {
foreach ($File in $FileList) {
Copy-Item -Path "$PSScriptRoot\$File" -Destination ('\\{0}\Projects\MyProject\{1}' -f $Server.Name, $File);
}
}
}
谢谢!但该脚本将位于不同的“c:\ scripts \”目录中。但是,源文件的“根”将始终位于“C:\ work \ project \”中。如何进行调整? – WebDevGuy