【发布时间】:2021-12-21 19:07:18
【问题描述】:
提前感谢您查看。我只是想看看其他人可能会做些什么来让它正常工作。对 PowerShell 和 Python 来说非常陌生,所以我现在只是在工作时尝试使用它。
这个脚本是一个小项目。
function EXEversion {
$prod1 = (Get-item "Path of exe").VersionInfo.ProductVersion
$prod2 = (Get-item "Path of exe").VersionInfo.ProductVersion
$prod3 = (Get-item "Path of exe").VersionInfo.ProductVersion
$prod3 = (Get-item "Path of exe").VersionInfo.ProductVersion
$MyArray = @($prod1, $prod2, $prod3, $prod4)
在下面查看我的 Foreach 循环:
foreach ($item in $MyArray){
if ($item.VersionInfo.ProductVersion -eq 15.9...)
{
# Here is where my other list of functions would go that delete certain items #
}
}
elseif ($item.VersionInfo.ProductVersion -eq 16.0)
{
# Other list of functions dedicated for if this specific version is found)
}
}
不幸的是,我知道我的缩进和格式都是错误的,我对 PS 非常陌生,并且仍在学习正确的格式。我想我可能很接近,它在某种程度上确实有效,但不是正确的,也不是它需要的方式。只是想看看其他人可能会做什么。
【问题讨论】:
-
它是如何“不按它需要的方式工作”的?请在您的问题中添加您获得的内容和想要获得的内容,以澄清您的意思。 ///// 我想你想看看
[version]类型而不是比较字符串。 -
我同意@Lee_Dailey 的观点,您应该将
(Get-item "Path of exe").VersionInfo.ProductVersion的结果转换为Version 类型以作为一个整体比较-eq [Version]'16.0'或执行[version]$prod1.Major -eq 15 -and [version]$prod1.Minor -gt 8之类的操作 -
我很抱歉没有更清楚。我的方法和 Abraham 发布的方法的主要问题是,它尝试为每个 exe 路径运行每个“if”语句 4 次,导致我在之后输入的代码执行不正确。我将稍后发布带有路径和产品版本的完整代码。我使用不同版本的 Visual Studio 作为 exe,并在“if”语句之后使用 Write-host 来告诉我是否找到了该产品版本。我会在一天结束之前发布完整的代码。
标签: arrays powershell loops if-statement foreach