检查状态HOTAS USB端口

时间:2019-12-17 04:11:31

标签: powershell batch-file usb port

一切都通过VoiceMacro运行。

禁用/启用HOTAS端口的想法有一个“检查”,可通过错误告诉我HOTAS的状态。

当VoiceMacro启动时,它将运行CheckStick.ps1和CheckThrottle.ps1以提供错误状态。

使用Devcon禁用或重新启用操纵杆和油门(Hotas)将在所有示例中使用STICK

devcon.exe disable *PID_2221
devcon.exe restart *PID_2221

如果Devcon无法重新启动HOTAS(有时)(我的LED灯不亮)

Enable-PnpDevice -InstanceId "USB\\VID_0738&PID_2221&MI_00\\76&B2A6FE&4&0000" -confirm:$false

然后再次运行devcon(有时可行)

CheckStick.ps1下面的代码检查操纵杆状态

$USBDevice = Get-PnpDevice | Where-Object { $_.InstanceId -match 'HID\\VID_0738&PID_2221&MI_00\\7&398F21D&0&0000' }; if ($USBDevice.Status -eq 'OK') { exit 0 } Else { exit 1 }

我无法将错误代码添加到VoiceMacro Enabled(0)或Disabled(1)中,如果粘贴到Powershell框中,则上述代码有效,但在其他任何地方都无法使用,只能获得Disabled(1)错误代码

我尝试了一个无法使用的批处理文件:

@echo off
PowerShell -WindowStyle Hidden -NoProfile -ExecutionPolicy Bypass -Command "& {Start-Process PowerShell -ArgumentList '-NoProfile -ExecutionPolicy Bypass -File "C\CheckStick.ps1"' -Verb RunAs}";

我被困住了,是否有更好的方法来完成所有这些工作?我的编码经验是复制和粘贴大量内容。

谢谢!

UPDATE可能已经解决了部分问题(过去的工作副本)

@ECHO OFF

SET SCRIPTNAME=%~d0%~p0%~n0.ps1
SET ARGS=%*
IF [%ARGS%] NEQ [] GOTO ESCAPE_ARGS

:POWERSHELL
PowerShell.exe -NoProfile -NonInteractive -NoLogo -ExecutionPolicy Unrestricted -Command "& { $ErrorActionPreference = 'Stop'; & '%SCRIPTNAME%' @args; EXIT $LASTEXITCODE }" %ARGS%
EXIT /B %ERRORLEVEL%

:ESCAPE_ARGS
SET ARGS=%ARGS:"=\"%
SET ARGS=%ARGS:`=``%
SET ARGS=%ARGS:'=`'%
SET ARGS=%ARGS:$=`$%
SET ARGS=%ARGS:{=`}%
SET ARGS=%ARGS:}=`}%
SET ARGS=%ARGS:(=`(%
SET ARGS=%ARGS:)=`)%
SET ARGS=%ARGS:,=`,%
SET ARGS=%ARGS:^%=%

GOTO POWERSHELL

带有.ps1文件

$USBDevice = Get-PnpDevice | Where-Object { $_.InstanceId -match 'HID\\VID_0738&PID_A221&MI_00\\7&1007BFFD&0&0000' };if ($USBDevice.Status -eq 'OK') { exit 0 } Else { exit 1 }

0 个答案:

没有答案