Я создал для вас решение, которое, я думаю, будет соответствовать вашей ситуации. Я создал его, основываясь на методологии воспроизведения песен. Я создал XML-документ, в котором вы бы перечислили каждый из ваших сценариев индивидуально, а в другом узле того же документа вы перечислите сценарии, которые вы хотите скопировать для каждого проекта. Я создал рабочий пример этого ниже. Хотя это не элегантно, когда речь идет об управлении несколькими сотнями файлов сценариев или множеством проектов, но оно выполняет свою работу.
PS1 Script
[xml]$XML = gc "C:\XMLFile1.xml"
$Scripts = $XML.Root.Scripts.Script
$Projects = $XML.Root.Projects.Project
foreach($Project in $Projects){
$ProjectLocation = $Project.CopyPath
$ProjectScripts = $Project.Script
foreach($Script in $ProjectScripts){
$ScriptPath = ($Scripts|?{$_.ID -eq $Script.ID}|Select Path).Path
Copy-Item -Path $ScriptPath -Destination $ProjectLocation
}
}
XMLFILE
<Root>
<Scripts>
<Script ID="1" Path="C:\1.PS1"></Script>
<Script ID="2" Path="C:\2.PS1"></Script>
<Script ID="3" Path="C:\3.PSM1"></Script>
</Scripts>
<Projects>
<Project Name="Project1" CopyPath="\\Server\Share\Project1">
<Scripts ID="1"/>
</Project>
<Project Name="Project2" CopyPath="C:\Projects\Project2">
<Scripts ID="1"/>
<Scripts ID="3"/>
</Project>
</Projects>
</Root>