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

PowerShell脚本批量运行C:\drivers下EXE报错求助(多文件时出错)

问题原因

你的脚本错误出在foreach循环内部:你传入Start-Process的是整个文件列表数组$exelist,但-FilePath参数要求单个字符串格式的文件路径。当目录下只有一个exe时,PowerShell会自动将单元素数组转换为字符串,所以能正常运行;但有多个exe时,数组无法直接转成单个字符串,就触发了参数类型错误。

修正后的脚本
$exelist = Get-ChildItem "C:\drivers\*.exe"

foreach ($exe in $exelist) {
    Start-Process -Wait -FilePath $exe.FullName -ArgumentList "/S" -PassThru
}
关键修改点
  • 循环内部使用$exe.FullName代替$exelist:$exe是循环中的单个文件对象,FullName属性可以获取它的完整路径字符串,完全符合-FilePath的参数要求
  • 移除了无用的$exe = "*.exe"变量,这个变量没有实际作用,还容易和循环变量重名造成混淆
额外优化建议

如果需要跳过无法执行的文件并记录错误,可以添加错误处理逻辑:

$exelist = Get-ChildItem "C:\drivers\*.exe"

foreach ($exe in $exelist) {
    try {
        Start-Process -Wait -FilePath $exe.FullName -ArgumentList "/S" -PassThru -ErrorAction Stop
        Write-Host "成功执行:$($exe.FullName)"
    }
    catch {
        Write-Warning "执行失败:$($exe.FullName),错误信息:$_"
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 17:12:08