Powershell专家 ,你能用一个有趣的脚本来帮助我吗? :)
我公司有5台服务器,都有相同的目录结构。我有一个文件, servers.txt ,包含2个字段。第一,服务器的名称,第二,是否应该为此次运行部署。例如....
MyServer1 Yes
MyServer2 No
MyServer3 No
MyServer4 Yes
MyServer5 Yes
第二个文件 files.txt 包含将部署到“是”服务器的文件的名称,复制到服务器上的相应目录,dirs是离开“根”。 (服务器的根目录是\ SERVER_NAME \ Projects \ MyProject)files.txt的示例
file1.aspx
bin\myproject.dll
css\style1.css
secure\file2.aspx
secure\file3.aspx
因此,例如,bin \ myproject.dll将被复制到\ MyServer1 \ Projects \ MyProject \ bin \ myproject.dll,但仅适用于在servers.txt中标记为“是”的服务器。
我正在尝试编写一个脚本来执行此部署,读取这两个文件并执行复制。任何可以提供帮助的powershell大师?我非常感激!
答案 0 :(得分:0)
这是未经测试的,但看看它是否有效。它假定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);
}
}
}