Windows11下用PowerShell提取EXE版本并更新INI遇阻求助
解决PowerShell脚本执行限制并完成版本提取与INI更新操作
1. 临时解除当前进程的脚本执行限制
系统默认执行策略禁止运行脚本,先临时放开当前PowerShell进程的限制(关闭窗口后自动恢复原有设置,无需管理员权限):
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -Force
2. 加载PSIni模块
执行策略调整后,运行以下命令加载模块:
Import-Module PsIni
3. 提取并格式化版本号
首先获取安装包的版本信息:
$versionInfo = (Get-Item "MeetSchedAssistSetup.exe").VersionInfo.ProductVersionRaw
根据需求格式化为对应值:
- LatestVersion(数值格式,示例:
23003000):
$latestVersion = $versionInfo.Major * 1000000 + $versionInfo.Minor * 10000 + $versionInfo.Build * 100 + $versionInfo.Revision
- LatestVersionString(字符串格式,示例:
23.0.3.0):
$latestVersionString = "$($versionInfo.Major).$($versionInfo.Minor).$($versionInfo.Build).$($versionInfo.Revision)"
4. 读取、更新并保存INI文件
- 读取目标INI文件内容:
$ini = Get-IniContent "version_meetschedassist2.ini"
- 更新
[MeetSchedAssist Update]段的指定值:
$ini["MeetSchedAssist Update"]["LatestVersion"] = $latestVersion $ini["MeetSchedAssist Update"]["LatestVersionString"] = $latestVersionString
- 保存修改后的INI文件:
$ini | Out-IniFile "version_meetschedassist2.ini" -Force
完整一键执行脚本
将所有步骤整合为一个脚本,直接运行即可完成全部操作:
# 临时解除当前进程脚本限制 Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -Force # 加载PSIni模块 Import-Module PsIni # 获取版本信息 $versionInfo = (Get-Item "MeetSchedAssistSetup.exe").VersionInfo.ProductVersionRaw # 格式化版本值 $latestVersion = $versionInfo.Major * 1000000 + $versionInfo.Minor * 10000 + $versionInfo.Build * 100 + $versionInfo.Revision $latestVersionString = "$($versionInfo.Major).$($versionInfo.Minor).$($versionInfo.Build).$($versionInfo.Revision)" # 读取、更新、保存INI $ini = Get-IniContent "version_meetschedassist2.ini" $ini["MeetSchedAssist Update"]["LatestVersion"] = $latestVersion $ini["MeetSchedAssist Update"]["LatestVersionString"] = $latestVersionString $ini | Out-IniFile "version_meetschedassist2.ini" -Force Write-Host "版本更新完成!"
内容的提问来源于stack exchange,提问作者Andrew Truckle
相关产品推荐
相关产品推荐

