PowerShell禁用并启用驱动程序

pew*_*uin 8 powershell driver

有时在重启/冷启动后我的Win8中的触摸屏驱动程序出现问题,所以我现在要手动重启它.

所以我想编写一个在登录后启动的脚本,它将禁用驱动程序并再次启用它.

我实际上找到了驱动程序,并且我可以通过以下方式获取驱动程序的对象列表:

Get-WmiObject Win32_PnPSignedDriver| select devicename, driverversion | where {$_.devicename -like "I2C*"}
Run Code Online (Sandbox Code Playgroud)

但是| Disable-Device在行尾添加" "将无效.

任何人都可以告诉我如何正确编写命令并像批处理文件一样启动脚本?

Fal*_*der 10

至少在Windows 10中它更容易:

$d = Get-PnpDevice| where {$_.friendlyname -like "I2Cwhatever*"}
$d  | Disable-PnpDevice -Confirm:$false
$d  | Enable-PnpDevice -Confirm:$false
Run Code Online (Sandbox Code Playgroud)

  • 仅当我在管理控制台中运行它时,这才适用于我,否则我会收到异常:…FullyQualifiedErrorId:HRESULT 0x80041001,Disable-PnpDevice (2认同)
  • 当然,您不应该期望任何涉及设备驱动程序的东西都能在标准控制台中工作。 (2认同)

Jam*_*kin 4

假设您正在使用设备管理 cmdlet,我建议使用Get-Device同一包中提供的 cmdlet 来传递管道。

快速查看后,我发现 Disable-Device 不会从管道中获取 DeviceName 或 DriverVersion 中的任何一个 - 并且不会识别其中任何一个,因为它只是标识参数 ( -TargetDevice)。

technet 页面建议这样做,以禁用设备:

$deviceName = Read-Host -Prompt 'Please enter the Name of the Device to Disable'; Get-Device | Where-Object -Property Name -Like $deviceName | Disable-Device
Run Code Online (Sandbox Code Playgroud)

您可以简单地使用类似的内容,假设您的设备名称与使用 Get-Device cmdlet 类似:

Get-Device | where {$_.name -like "I2C*"} | Disable-Device
Run Code Online (Sandbox Code Playgroud)