如何通过PowerShell卸载vmxnet3网卡且不删除驱动
如何用PowerShell卸载vmxnet3网络适配器
你需要卸载的是设备实例,而非驱动服务,之前用Win32_SystemDriver的方法操作的是驱动服务,这和手动卸载设备的逻辑不符,所以会出现服务无法停止(返回值4通常代表操作无法执行,比如设备正被占用)的问题。
正确的PowerShell实现步骤
- 确认设备信息
先执行以下命令确认设备存在,注意匹配设备的准确名称(你的手动步骤里是vmxnet3 network adapter,命令里用的是vmxnet3 Ethernet Adapter,需要确保名称一致):
Get-PnpDevice -FriendlyName "vmxnet3 Ethernet Adapter" -IncludeHidden
加上-IncludeHidden参数可以对应手动步骤里的「显示隐藏的设备」。
- 卸载设备(不删除驱动)
以管理员身份运行PowerShell,执行以下脚本:
# 获取目标设备(包含隐藏设备) $targetDevice = Get-PnpDevice -FriendlyName "vmxnet3 Ethernet Adapter" -IncludeHidden # 卸载设备,对应手动步骤里的「卸载」操作,默认不会删除驱动软件 $targetDevice | Remove-PnpDevice -Confirm:$false
Remove-PnpDevice完全对应手动卸载设备的操作,默认不会勾选「删除此设备的驱动程序软件」,和你的需求一致。
- 如果设备无法直接卸载
若设备因正在使用无法卸载,可以先禁用再卸载:
$targetDevice = Get-PnpDevice -FriendlyName "vmxnet3 Ethernet Adapter" -IncludeHidden $targetDevice | Disable-PnpDevice -Confirm:$false Start-Sleep -Seconds 2 # 等待设备禁用完成 $targetDevice | Remove-PnpDevice -Confirm:$false
关于你之前的脚本问题
Win32_SystemDriver类针对的是驱动服务的管理,而非设备实例。StopService()返回值4表示服务无法停止(比如设备正被系统占用),Delete()只是移除驱动服务的注册信息,但并没有卸载设备本身,这和你要的「卸载设备」不是同一个操作。
内容的提问来源于stack exchange,提问作者Arbelac
相关产品推荐
相关产品推荐

