fix: resolve full exe path via Get-Command for Start-Process
This commit is contained in:
parent
c09a999710
commit
e1e5f783c0
@ -37,17 +37,21 @@ function Write-Banner {
|
|||||||
|
|
||||||
function Start-Detached {
|
function Start-Detached {
|
||||||
param([string]$Name, [string]$Exe, [string[]]$Args, [switch]$Visible)
|
param([string]$Name, [string]$Exe, [string[]]$Args, [switch]$Visible)
|
||||||
$found = (Test-Path $Exe) -or (Get-Command $Exe -ErrorAction SilentlyContinue)
|
$exePath = $Exe
|
||||||
if (-not $found) {
|
if (-not (Test-Path $Exe)) {
|
||||||
|
$cmd = Get-Command $Exe -ErrorAction SilentlyContinue
|
||||||
|
if ($cmd) { $exePath = $cmd.Source }
|
||||||
|
}
|
||||||
|
if (-not $exePath -or -not (Test-Path $exePath)) {
|
||||||
Write-Host " [SKIP] $Name : 未找到 $Exe" -ForegroundColor Yellow
|
Write-Host " [SKIP] $Name : 未找到 $Exe" -ForegroundColor Yellow
|
||||||
return $null
|
return $null
|
||||||
}
|
}
|
||||||
Write-Host " [START] $Name" -ForegroundColor Green
|
Write-Host " [START] $Name ($exePath)" -ForegroundColor Green
|
||||||
$style = if ($Visible) { "Normal" } else { "Minimized" }
|
$style = if ($Visible) { "Normal" } else { "Minimized" }
|
||||||
if ($Args -and $Args.Count -gt 0) {
|
if ($Args -and $Args.Count -gt 0) {
|
||||||
$proc = Start-Process -FilePath $Exe -ArgumentList $Args -WindowStyle $style -PassThru
|
$proc = Start-Process -FilePath $exePath -ArgumentList $Args -WindowStyle $style -PassThru
|
||||||
} else {
|
} else {
|
||||||
$proc = Start-Process -FilePath $Exe -WindowStyle $style -PassThru
|
$proc = Start-Process -FilePath $exePath -WindowStyle $style -PassThru
|
||||||
}
|
}
|
||||||
Start-Sleep -Milliseconds 500
|
Start-Sleep -Milliseconds 500
|
||||||
return $proc
|
return $proc
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user