You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让PowerShell等待AWS ENA驱动安装脚本完成后再执行重启?

解决AWS ENA驱动升级脚本中重启时机异常问题

核心问题根源

直接调用.\install.ps1后立刻执行Restart-Computer,本质是因为install.ps1内部启动了异步运行的驱动安装进程,脚本自身提前返回,导致重启命令在驱动实际安装完成前就触发,进而引发实例重启卡顿。

具体解决方案

1. 强制等待install.ps1完全执行

用Start-Process命令调用脚本并强制等待其结束,替代直接调用的方式,确保脚本逻辑走完:

cd \Temp\AwsEnaNetworkDriver

# 启动install.ps1并等待其执行完毕
Start-Process powershell.exe -ArgumentList "-File .\install.ps1" -Wait -NoNewWindow

2. 验证驱动安装状态(推荐添加)

在脚本执行结束后,额外校验ENA驱动的实际状态,避免脚本执行完成但驱动未生效就重启:

# 检查ENA驱动服务是否正常运行
$enaService = Get-Service -Name "AwsEnaNetworkDriver" -ErrorAction SilentlyContinue
while ($null -eq $enaService -or $enaService.Status -ne "Running") {
    Start-Sleep -Seconds 5
    $enaService = Get-Service -Name "AwsEnaNetworkDriver" -ErrorAction SilentlyContinue
}

# 可选:校验驱动版本(替换为你的目标版本)
$targetVersion = "2.2.10"
$currentVersion = (Get-WmiObject Win32_PnPSignedDriver | Where-Object {$_.DeviceName -like "*Elastic Network Adapter*"}).DriverVersion
while ($currentVersion -ne $targetVersion) {
    Start-Sleep -Seconds 5
    $currentVersion = (Get-WmiObject Win32_PnPSignedDriver | Where-Object {$_.DeviceName -like "*Elastic Network Adapter*"}).DriverVersion
}

3. 等待网络恢复

由于安装过程会出现15-20秒的网络离线,可添加网络连通性检查,确保网络恢复后再重启:

# 等待默认网关连通(验证网络恢复)
$defaultGateway = (Get-NetRoute -DestinationPrefix 0.0.0.0/0).NextHop
while (-not (Test-Connection -ComputerName $defaultGateway -Count 1 -Quiet -ErrorAction SilentlyContinue)) {
    Start-Sleep -Seconds 3
}

完整脚本示例

cd \Temp\AwsEnaNetworkDriver

# 等待install.ps1执行完成
Start-Process powershell.exe -ArgumentList "-File .\install.ps1" -Wait -NoNewWindow

# 等待ENA服务启动
$enaService = Get-Service -Name "AwsEnaNetworkDriver" -ErrorAction SilentlyContinue
while ($null -eq $enaService -or $enaService.Status -ne "Running") {
    Start-Sleep -Seconds 5
    $enaService = Get-Service -Name "AwsEnaNetworkDriver" -ErrorAction SilentlyContinue
}

# 等待网络恢复
$defaultGateway = (Get-NetRoute -DestinationPrefix 0.0.0.0/0).NextHop
while (-not (Test-Connection -ComputerName $defaultGateway -Count 1 -Quiet -ErrorAction SilentlyContinue)) {
    Start-Sleep -Seconds 3
}

# 执行重启
Restart-Computer -Force

内容的提问来源于stack exchange,提问作者prof x

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 05:40:21