首页 > 解决方案 > 协助使用 PowerShell 自动升级的脚本

问题描述

我很好奇是否有人可以在这里指出我正确的方向。我支持具有多个可能版本的程序。我的一些客户总是使用最新版本,而另一些客户似乎每隔几年才升级一次。软件升级后,您必须安装每个后续版本,直到获得所需的新版本。因此,如果我们有版本 1、2、3、4...一直到版本 10,并且有人从版本 3 升级到版本 9,我们必须安装 4、5、6、7、8 和然后 9. 目前我们必须手动运行每个单独的版本,所以我正在考虑创建一个脚本,它将静默安装每个版本并在适当的位置停止。

目前,我知道这样做的唯一方法是为原始版本和潜在版本的每个可能的组合编写一个语句。例如:

If starting version is 3 and ending version is 4
    install 4
if starting version is 3 and ending version is 5
    install 4
    install 5
if starting version is 3 and ending version is 6
    install 4
    install 5
    install 6

(是的,我知道这不是正确的 powershell 代码,但我希望你能明白我所说的内容)。

所以在我花太多时间写出每个可能的组合之前(我们有超过 40 种可能的安装),有没有人建议我可以指定安装文件必须运行的顺序,然后提示开始和停止点,所以它只会在这些变量之间运行?因此,例如,如果客户使用的是版本 2 并且想要升级到版本 8,它会知道从安装 3 开始,然后安装每个后续安装,直到版本 8?

希望这是有道理的,任何帮助都会很棒!

标签: powershellversionupgrade

解决方案


鉴于您的问题陈述并假设您有足够的知识来运行安装:

$softwareVersion = Get-Version # I assume you have a way to determine this

:installLoop do {
    switch ([version]$softwareVersion) {
        [version]'1.0' {
            Install-V2
        }

        <# .. #>

        default {
            # no version?
            break installLoop
        }
    }

    $softwareVersion = Get-Version 
} until ([version]$softwareVersion -ge [version]'10.0')

推荐阅读