如何通过卸载字符串在PowerShell中实现NVIDIA显卡驱动的静默卸载?
解决NVIDIA显卡驱动PowerShell静默卸载问题
我来帮你搞定这个静默卸载的问题——你之前的参数加错位置了,NVIDIA的卸载器需要把静默参数传递给NVI2.DLL里的UninstallPackage函数,而不是直接附加给RunDll32.EXE。
问题根源
你的卸载字符串本质是通过RunDll32调用NVI2.DLL的UninstallPackage命令,目标是卸载Display.Driver包。常规的/S或/quiet参数不能直接给RunDll32,而是要作为UninstallPackage的附加参数传递。
正确的静默卸载脚本
以下是完整的PowerShell代码,包含正确的参数构造和静默卸载逻辑:
# 1. 从注册表获取NVIDIA显卡驱动的卸载信息(取第一个匹配项) $nvidiaUninstallInfo = Get-ChildItem -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" -ErrorAction SilentlyContinue | Get-ItemProperty | Where-Object {$_.DisplayName -like "*NVIDIA Graphics Driver*"} | Select-Object -First 1 DisplayName, UninstallString if (-not $nvidiaUninstallInfo) { Write-Error "未找到NVIDIA显卡驱动的卸载条目" exit 1 } # 2. 拆分卸载字符串,提取核心执行路径和参数 $splitParts = $nvidiaUninstallInfo.UninstallString -split '"', 3 $runDllPath = $splitParts[1] # 对应 C:\Windows\SysWOW64\RunDll32.EXE $baseUninstallArgs = $splitParts[2].Trim() # 对应 "C:\Program Files\NVIDIA Corporation\Installer2\InstallerCore\NVI2.DLL",UninstallPackage Display.Driver # 3. 添加静默卸载参数:/silent(或/quiet)实现无交互,/noreboot可选(避免自动重启) $silentUninstallArgs = "$baseUninstallArgs /silent /noreboot" # 4. 启动静默卸载进程(必须以管理员身份运行PowerShell!) Start-Process -FilePath $runDllPath -ArgumentList $silentUninstallArgs -Wait -NoNewWindow
关键说明
- 参数位置:
/silent或/quiet必须跟在Display.Driver后面,作为UninstallPackage的参数,而不是单独附加给RunDll32。 - 权限要求:必须以管理员身份运行PowerShell,否则会因权限不足导致卸载失败。
- 重启控制:如果希望卸载完成后自动重启,去掉
/noreboot参数即可;保留则需要手动重启系统以完成驱动清理。
为什么你之前的尝试失败?
- 你把
/quiet或/S直接加在$argList后面,这些参数被当成了RunDll32的参数,而不是传递给NVI2.DLL的卸载命令。 - NVIDIA的卸载器不识别
/S参数,需要使用官方支持的/silent或/quiet。
内容的提问来源于stack exchange,提问作者Ali Furqan
相关产品推荐
相关产品推荐

