PowerShell 脚本
如果提示禁止运行该脚本,可以查看禁止运行脚本的解决方案
# 获取所有HID-compliant mouse设备 $devices = Get-PnpDevice -Class Mouse # 创建一个对象数组来存储设备信息 $result = @() $id = 1 # 遍历每个设备并获取它们的状态和其他属性 foreach ($device in $devices) { # 本来只用来检测华为鼠标的,但是为了拓展下 # if ($device.FriendlyName -like "*HID-compliant mouse*") # { # } # 获取设备状态 $status = $device.Status # 不在使用的设备不继续 if ($status -ne "OK") { continue } $instanceId = (Get-PnpDeviceProperty -InstanceId $device.InstanceId -KeyName "DEVPKEY_Device_InstanceId").Data $hardwareIds = (Get-PnpDeviceProperty -InstanceId $device.InstanceId -KeyName "DEVPKEY_Device_HardwareIds").Data -join ", " $manufacturer = (Get-PnpDeviceProperty -InstanceId $device.InstanceId -KeyName "DEVPKEY_Device_Manufacturer").Data $deviceDesc = (Get-PnpDeviceProperty -InstanceId $device.InstanceId -KeyName "DEVPKEY_Device_DeviceDesc").Data $deviceParamKeyPath = "HKLM:\SYSTEM\CurrentControlSet\Enum\" + $instanceId + "\Device Parameters" try { $flipFlopWheel = Get-ItemPropertyValue -Path $deviceParamKeyPath -Name "FlipFlopWheel" -ErrorAction Stop } catch { # 如果找不到 FlipFlopWheel 键,设置默认值 $flipFlopWheel = "Not Found" } $result += [PSCustomObject]@{ Id = $id++ Name = $device.Name FlipFlopWheel = $flipFlopWheel InstanceId = $instanceId # # Manufacturer = $manufacturer # 都是 HID-compliant mouse,看不出区别 # Description = $deviceDesc # 都是 HID-compliant mouse,看不出区别 # Status = $status # FriendlyName = $device.FriendlyName # HardwareIds = $hardwareIds } } # 显示结果 $result | Format-Table -AutoSize # 定义了一个函数修改 function Set-FlipFlopWheel { param ( [string]$name, # 只是用来打印名字,无别的功能上的用途 [string]$instanceId ) $deviceParamKeyPath = "HKLM:\SYSTEM\CurrentControlSet\Enum\" + $instanceId + "\Device Parameters" try { Set-ItemProperty -Path $deviceParamKeyPath -Name "FlipFlopWheel" -Value 1 -ErrorAction Stop $newFlipFlopValue = Get-ItemPropertyValue -Path $deviceParamKeyPath -Name "FlipFlopWheel" -ErrorAction Stop Write-Output "device $( $name )'s FlipFlopWheel value has been modified to $newFlipFlopValue." } catch { Write-Output "try to modify device $( $name )'s FlipFlopWheel value err: $_" } } # 如果只有一个结果 并且 值不为 1 if ($result.Count -eq 1 -and $result.FlipFlopWheel -ne 1) { # 获取用户输入 $userInput = Read-Host "do you want to modify FlipFlopWheel to 1 ? (Y/N)" if ($userInput -eq "Y" -or $userInput -eq "y") { Set-FlipFlopWheel -name $result.Name -instanceId $result.InstanceId } } # 如果有多个设备,则让用户输入 id 来选择哪个设备 elseif ($result.Count -gt 1) { Write-Output "multi mouse device exist, please check and modify it by yourself" $selectedId = Read-Host "Input the id you wanna modify " $selectedDevice = $result | Where-Object { $_.Id -eq [int]$selectedId } if ($selectedDevice) { # 获取用户输入 $userInput = Read-Host "do you want to modify $selectedId FlipFlopWheel to 1 ? (Y/N)" if ($userInput -eq "Y" -or $userInput -eq "y") { Set-FlipFlopWheel -name $selectedDevice.Name -instanceId $selectedDevice.InstanceId } } else { Write-Output "illegal device id." } } else { Write-Output "HID-compliant mouse's FlipFlopWheel value already 1" } Write-Output "" pause
PowerShell 脚本
如果提示禁止运行该脚本,可以查看禁止运行脚本的解决方案
# 获取所有HID-compliant mouse设备
$devices = Get-PnpDevice -Class Mouse
# 创建一个对象数组来存储设备信息
$result = @()
$id = 1
# 遍历每个设备并获取它们的状态和其他属性
foreach ($device in $devices)
{
# 本来只用来检测华为鼠标的,但是为了拓展下
# if ($device.FriendlyName -like "*HID-compliant mouse*")
# {
# }
# 获取设备状态
$status = $device.Status
# 不在使用的设备不继续
if ($status -ne "OK")
{
continue
}
$instanceId = (Get-PnpDeviceProperty -InstanceId $device.InstanceId -KeyName "DEVPKEY_Device_InstanceId").Data
$hardwareIds = (Get-PnpDeviceProperty -InstanceId $device.InstanceId -KeyName "DEVPKEY_Device_HardwareIds").Data -join ", "
$manufacturer = (Get-PnpDeviceProperty -InstanceId $device.InstanceId -KeyName "DEVPKEY_Device_Manufacturer").Data
$deviceDesc = (Get-PnpDeviceProperty -InstanceId $device.InstanceId -KeyName "DEVPKEY_Device_DeviceDesc").Data
$deviceParamKeyPath = "HKLM:\SYSTEM\CurrentControlSet\Enum\" + $instanceId + "\Device Parameters"
try
{
$flipFlopWheel = Get-ItemPropertyValue -Path $deviceParamKeyPath -Name "FlipFlopWheel" -ErrorAction Stop
}
catch
{
# 如果找不到 FlipFlopWheel 键,设置默认值
$flipFlopWheel = "Not Found"
}
$result += [PSCustomObject]@{
Id = $id++
Name = $device.Name
FlipFlopWheel = $flipFlopWheel
InstanceId = $instanceId
#
# Manufacturer = $manufacturer # 都是 HID-compliant mouse,看不出区别
# Description = $deviceDesc # 都是 HID-compliant mouse,看不出区别
# Status = $status
# FriendlyName = $device.FriendlyName
# HardwareIds = $hardwareIds
}
}
# 显示结果
$result | Format-Table -AutoSize
# 定义了一个函数修改
function Set-FlipFlopWheel
{
param (
[string]$name, # 只是用来打印名字,无别的功能上的用途
[string]$instanceId
)
$deviceParamKeyPath = "HKLM:\SYSTEM\CurrentControlSet\Enum\" + $instanceId + "\Device Parameters"
try
{
Set-ItemProperty -Path $deviceParamKeyPath -Name "FlipFlopWheel" -Value 1 -ErrorAction Stop
$newFlipFlopValue = Get-ItemPropertyValue -Path $deviceParamKeyPath -Name "FlipFlopWheel" -ErrorAction Stop
Write-Output "device $( $name )'s FlipFlopWheel value has been modified to $newFlipFlopValue."
}
catch
{
Write-Output "try to modify device $( $name )'s FlipFlopWheel value err: $_"
}
}
# 如果只有一个结果 并且 值不为 1
if ($result.Count -eq 1 -and $result.FlipFlopWheel -ne 1)
{
# 获取用户输入
$userInput = Read-Host "do you want to modify FlipFlopWheel to 1 ? (Y/N)"
if ($userInput -eq "Y" -or $userInput -eq "y")
{
Set-FlipFlopWheel -name $result.Name -instanceId $result.InstanceId
}
}
# 如果有多个设备,则让用户输入 id 来选择哪个设备
elseif ($result.Count -gt 1)
{
Write-Output "multi mouse device exist, please check and modify it by yourself"
$selectedId = Read-Host "Input the id you wanna modify "
$selectedDevice = $result | Where-Object { $_.Id -eq [int]$selectedId }
if ($selectedDevice)
{
# 获取用户输入
$userInput = Read-Host "do you want to modify $selectedId FlipFlopWheel to 1 ? (Y/N)"
if ($userInput -eq "Y" -or $userInput -eq "y")
{
Set-FlipFlopWheel -name $selectedDevice.Name -instanceId $selectedDevice.InstanceId
}
}
else
{
Write-Output "illegal device id."
}
}
else
{
Write-Output "HID-compliant mouse's FlipFlopWheel value already 1"
}
Write-Output ""
pause