gpt4 book ai didi

deployment - PowerShell 依赖管理

转载 作者:行者123 更新时间:2023-12-04 21:24:59 25 4
gpt4 key购买 nike

场景

我的 PowerShell 文件夹包含一个实用程序脚本库。我在我的工作和家用计算机之间使用 GitHub 共享和版本控制。在工作中,我现在有许多项目想要利用我的脚本库。

问题

当我更新一个实用程序脚本时,我不想将它手动复制到使用它的所有工作项目中。

可能的解决方案

  • (简单的)

    编写一个 PowerShell 函数,将我的整个脚本库复制到每个脚本项目的工作目录下的“Dependencies\Scripts”目录中。随着我的脚本库的增长,其他人可能很难找到与脚本项目相关的库脚本。
  • (过于复杂?)

    在需要库脚本之一的每个工作项目脚本文件中使用某种“需要”函数。当库脚本更新时,工具可以决定哪些工作项目需要该库脚本并将最新版本复制到工作项目。如果脚本在没有适当依赖的情况下运行,它将抛出一个错误,提醒用户如何从库中获取最新版本。

  • 问题
  • 以前有人解决过这个问题吗?
  • 是否有适用于 PowerShell 的现有依赖项管理工具可以执行 2?
  • 最佳答案

    我为您创建了一个我认为适合您情况的解决方案。我根据歌曲播放列表方法创建了它。我创建了一个 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
    }
    }

    XML文件
    <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>

    关于deployment - PowerShell 依赖管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5202601/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com