powershell - 协助使用 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?
希望这是有道理的,任何帮助都会很棒!
解决方案
鉴于您的问题陈述并假设您有足够的知识来运行安装:
$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')
推荐阅读
- apache-kafka - 恰好一次语义 KAFKA 可能声称
- html - 我无法弄清楚这个标志的 CSS 样式来挽救我的生命
- java - spring kafka ssl 类路径信任库
- javascript - Moment js - 无法从一天的开始时间过去
- ruby-on-rails - 如何限制对 Rails 中不同页面的访问?
- excel - 设置 Range.Value 会导致 #VALUE!在 Excel VBA 中,并且重新提交函数也会导致所有其他函数重新提交
- acumatica - 在 Visual Studio 中打开的自定义项中的引用
- javascript - 猫鼬找到下一个对象
- c - C:如何以块的形式读取文件的一部分
- node.js - 访问嵌套数据库的最后一个元素