param ( [Parameter(Mandatory=$true)] [ValidateSet("stop", "start", "stat")] [string]$Action ) $deviceId = "USB\\VID_0BDA&PID_0423\\5&3A692CE1&0&17" #Type-C Gen2x2 20G #$deviceId = "USB\\VID_0BDA&PID_0423\\5&3A692CE1&0&23" #USB3.2口(红) Gen2 10G #$deviceId = "USB\\VID_0BDA&PID_0423\\5&3A692CE1&0&22" #BIOS升级口(红) Gen2 10G 无法停止的端口 function Disable-USBDevice { param ( [string]$DeviceId ) $device = Get-WmiObject -Class Win32_PnPEntity -Filter "DeviceID='$DeviceId'" if ($device) { $result = $device.Disable() if ($result.ReturnValue -eq 0) { Write-Host "USB device $DeviceId has been disabled." return 0 } else { Write-Host "Failed to disable USB device $DeviceId." } } else { Write-Host "USB device $DeviceId not found." } return -2 } function Enable-USBDevice { param ( [string]$DeviceId ) $device = Get-WmiObject -Class Win32_PnPEntity -Filter "DeviceID='$DeviceId'" if ($device) { $result = $device.Enable() if ($result.ReturnValue -eq 0) { Write-Host "USB device $DeviceId has been enabled." return 0 } else { Write-Host "Failed to enable USB device $DeviceId." } } else { Write-Host "USB device $DeviceId not found." } return -3 } function Get-USBDeviceStatus { param ( [string]$DeviceId ) #$device = Get-WmiObject -Class Win32_PnPEntity -Filter "DeviceID='$DeviceId'" $device = Get-CimInstance -ClassName Win32_PnPEntity -Filter "DeviceID='$DeviceId'" if ($device) { $device.PSObject.Properties | ForEach-Object { #Write-Host "$($_.Name): $($_.Value)" } if ($device.Status -eq "OK") { Write-Host "USB device $DeviceId is enabled." return 0 } else { Write-Host "USB device $DeviceId is disabled." } } else { Write-Host "USB device $DeviceId not found." } return -1 } $ret = 0 switch ($Action) { "stop" { $ret = Disable-USBDevice -DeviceId $deviceId } "start" { $ret = Enable-USBDevice -DeviceId $deviceId } "stat" { $ret = Get-USBDeviceStatus -DeviceId $deviceId } } return $ret