0

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大師?我將非常感激!

回答

0

這是未經測試,但看看它是否工作。它假定files.txtservers.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); 
     } 
    } 
} 
+0

謝謝!但該腳本將位於不同的「c:\ scripts \」目錄中。但是,源文件的「根」將始終位於「C:\ work \ project \」中。如何進行調整? – WebDevGuy

相關問題