powershell - 从 powershell 启动具有特定名称的应用程序
问题描述
我有以下名称的应用程序:"x64.Staging.1.0.0.99.ClientBootstrapper"
. 我需要每周安装这个应用程序。从powershell我使用这个命令
"./x64.Staging.1.0.0.99.ClientBootstrapper"
但是每周版本的版本号都会更改,我必须更改我的脚本。如何更新我的脚本,以便脚本自动检测应用程序的最新版本并运行它?我尝试使用以下内容:
$version=“x64.Staging.{0-9}.ClientBootstrapper.exe
./x64.Staging.$version.ClientBootstrapper.exe /qn
但这似乎不起作用。
解决方案
您可能会执行以下操作:
$exe = Get-ChildItem -Path "x64.Staging.[0-9]*.ClientBootstrapper.exe" -File | Sort-Object {
[version]($_.Name -replace 'x64\.Staging\.([0-9\.]+)\.ClientBootstrapper\.exe','$1' -replace '^\d+$','$0.0')
} -Descending |
Select-Object -First 1 | Resolve-Path -Relative
& $exe '/qn'
解释:
策略是按文件名中间的版本字符串排序。-replace
删除文件名中除版本之外的所有字符。([0-9\.]+)
匹配一个或多个数字和点。$1
是表示版本字符串的捕获组。由于版本对象至少需要一个主要和次要编号(3.2
例如),.0
因此将 a 附加到可能出现在版本字符串中的一个单独的数字上。
Resolve-Path
只是返回相对路径。没有必要,因为您可以删除命令然后修改Select-Object -First 1 -Expand FullName
推荐阅读
- javascript - Javascript asyc 和 await 如何在这个特定代码中工作?
- android - 更改小部件的边距运行时
- linux - monit - 在 monitrc 文件中设置详细模式
- plotly - Plotly Dash 参考线没有显示 - python
- java - 有没有办法用具有嵌套类的文件实例化对象?
- bash - 为什么目录的硬链接数为 2 + 子目录的数量?
- c# - 从 C# .Net 中的反汇编文件中获取特定值
- xcode - Sqlite 数据库在 iPad 上的位置
- reactjs - 无论父/子组件是否同时调用,都将加载微调器限制为 1 个实例
- android - 如何在 Android 上启用/禁用蓝牙硬件初始化日志记录?