我为您创建了一个适合您情况的解决方案。我根据歌曲播放列表方法创建了它。我创建了一个xml文档,您可以在其中单独列出每个脚本,并在同一文档的另一个节点中列出要为每个项目复制的脚本。我在下面创建了一个工作示例。尽管在管理几百个脚本文件或者很多项目时它并不优雅,但它可以完成任务。
PS1脚本
[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>