在嵌套文件夹中运行最新的.exe

时间:2019-06-07 17:58:19

标签: powershell

以前,我创建了一个脚本,该脚本将找到软件的最新版本并安装.msi,现在已经安装了程序,我想在计算机上搜索该程序并打开.exe。

我相信正在发生的事情是,我尝试运行的exe与所有其他构建文件夹中的exe具有相同的名称。

我尝试用几种不同的方式过滤日期中的项目。以下是我上次尝试使用的当前代码:

$path = "C:\Program Files (x86)\Company"
$refDate = (Get-Date).Adddays(-30)
$filter = "app.exe"

&$latest = Get-ChildItem -Path $path -Filter $filter -File -Recurse | Where-Object {$_.LastWriteTime -gt $refDate} 

我想从相应的文件夹中运行正确的exe。

2 个答案:

答案 0 :(得分:1)

这是@Matt的答案,已集成到您的脚本中。

$path = "C:\Program Files (x86)\Company"
$refDate = (Get-Date).Adddays(-30)
$filter = "app.exe"

$latest = Get-ChildItem -Path $path -Filter $filter -File -Recurse | Sort lastwritetime -Desc | Select -First 1 -Expand Fullname
& $latest

尝试执行赋值语句(& $latest = ...)而不是$latest变量可能是导致错误的原因。

答案 1 :(得分:0)

尝试此操作(如果没有可执行文件,则使用此方法,您不会出错)

$path = "C:\Program Files (x86)\Company"
$filter = "app.exe"

Get-ChildItem $path -Filter $filter -File -Recurse -ErrorAction SilentlyContinue | Sort lastwritetime -Desc | Select -First 1 | %{& $_.FullName}