协助脚本自动使用PowerShell进行升级

时间:2018-05-11 19:20:22

标签: powershell version upgrade

我很好奇是否有人可以在这里指出我正确的方向。我支持一个有几个可能版本的程序。我的一些客户总是使用最新版本,而其他客户似乎每隔几年就会升级一次。升级软件后,必须安装每个后续版本,直到获得所需的新版本。因此,如果我们有版本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?

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

1 个答案:

答案 0 :(得分:0)

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

$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')