Windows 7:创建启动“修复网络连接”的键盘快捷键?

Windows 7:创建启动“修复网络连接”的键盘快捷键?

我想要一个用于解决网络断开和问题(例如,网络断开连接或网络出现问题)的虚拟紧急按钮,这样我就可以随时按下组合键,让计算机自动检测网络问题或重置适配器。

我在创建键盘快捷键时发现了这一点: https://lifehacker.com/5783366/how-to-create-a-keyboard-shortcut-to-launch-anything-in-windows

对网络诊断进行了一些调查,发现 https://blogs.msdn.microsoft.com/mattbie/2010/11/09/running-a-troubleshooter-from-the-command-line/

msdt.exe /id NetworkDiagnosticsWeb ==> 弹出一个交互式提示。我不想要交互式提示,我想弹出一个工具,它可以尽快开始修复网络连接,而无需人工干预。

如果问题仍然不清楚:我需要创建一个快捷方式或批处理来调用完全自动的网络修复,以便我可以将其链接到键盘快捷键。

答案1

下面是一个批处理脚本,它将模拟键盘敲击来操作标题为“网络连接msdt.exe /id NetworkDiagnosticsWeb“运行时弹出。

本质上它将开始命令msdt.exe /id NetworkDiagnosticsWeb,确保Internet Connections标题窗口处于活动状态,等待 2 秒,按Tab两次,Enter按一次,暂停 2 秒,然后Enter再次按以确保它立即开始故障排除。

在此处输入图片描述

在此处输入图片描述


批处理脚本

@ECHO OFF

start "" msdt.exe /id NetworkDiagnosticsWeb
ping -n 2 127.0.0.1 > nul

:VBSDynamicBuild
SET TempVBSFile=%tmp%\~tmpSendKeysTemp.vbs
IF EXIST "%TempVBSFile%" DEL /F /Q "%TempVBSFile%"
ECHO Set WshShell = WScript.CreateObject("WScript.Shell") >>"%TempVBSFile%"
ECHO Wscript.Sleep 500                                    >>"%TempVBSFile%"
ECHO WshShell.AppActivate "Internet Connections"          >>"%TempVBSFile%"
ECHO Wscript.Sleep 2000                                   >>"%TempVBSFile%"
ECHO WshShell.SendKeys "{TAB 2}{ENTER}"                   >>"%TempVBSFile%"
ECHO Wscript.Sleep 2000                                   >>"%TempVBSFile%"
ECHO WshShell.SendKeys "{ENTER}"                          >>"%TempVBSFile%"

CSCRIPT //nologo "%TempVBSFile%"
EXIT

更多资源

答案2

您可以使用电源外壳 Get-TroubleshootingPack Cmdlet指导您完成创建应答文件的过程,以便稍后使用调用-TroubleshootingPack Cmdlet实现自动化。


步骤:手动创建并运行

1. PowerShell(创建应答文件)

$aFile = "C:\Folder\Path\AudioAnswerFile.xml"
Get-TroubleshootingPack -Path "C:\Windows\diagnostics\system\Networking" -AnswerFile $aFile

应答文件创建期间可选择的选项

重要的: 我只选择了我认为需要选择的内容,但进行了进一步的测试,并在每个答案上投入了更多的时间和思考,以防您发现适合您的情况的内容。

  • [1] Web Connectivity
  • [1] Troubleshoot my connection to the Internet
  • [1] TCP
  • [1] I'm trying to reach a specific website or folder on a network
  • 选择[x] Exit其余所有答案并按进入

    在此处输入图片描述

    在此处输入图片描述


应答文件内容

笔记:*现在您有了一个应答文件,您可以使用它来指向您可以自动化的作业或创建快捷方式以批处理方式运行,我将在下面详细讨论。

<?xml version="1.0" encoding="UTF-8"?>
<Answers Version="1.0">
  <Interaction ID="IT_EntryPoint">
    <Value>HTTP</Value>
  </Interaction>
  <Interaction ID="IT_WebChoice">
    <Value>Internet</Value>
  </Interaction>
  <Interaction ID="IT_Protocol">
    <Value>6</Value>
  </Interaction>
  <Interaction ID="IT_DefaultConnectivityInitialChoice">
    <Value>HTTPorUNC</Value>
  </Interaction>
</Answers>

2. PowerShell(运行诊断进程)

笔记: 变量$aFile值应指向您刚刚在上面 #1 中创建的应答文件。$dFolder变量值应是一个文件夹,用于检查运行后的诊断结果。

$aFile = "C:\Folder\Path\AudioAnswerFile.xml"
$dFolder = "C:\Folder\Path\Diag"
$var = Get-TroubleshootingPack -Path "C:\Windows\diagnostics\system\Networking"
Invoke-TroubleshootingPack -Pack $v -AnswerFile $aFile -Unattended -Result $dFolder

结果

现在,通过转到变量值中指定的文件夹,打开您使用答案文件调用的此命令的结果文件$dFolder ,您将获得一些可以进一步分析的文件。

结果文件夹文件

675B09EE-5DE8-4AF5-B10D-07DB894902D2.Diagnose.0.etl
DebugReport.xml
NetworkConfiguration.cab
ResultReport.xml
results.xsl

在此处输入图片描述


将其全部放入批处理文件中

笔记: 这要求应答文件已经配置好,并且位于Invoke-TroubleshootingPackcmdlet 可利用的可读位置,因此这就是您使用上述步骤 #1 创建的内容。除此之外,您只需将AnswerFile=DiagFolder=值设置为可以写入的有效位置。

@ECHO OFF

SET "AnswerFile=C:\Folder\Path\AudioAnswerFile.xml"
SET "DiagFolder=C:\Folder\Path\Diag"

CALL :PowerShell
CD /D "%PowerShellDir%"
Powershell -ExecutionPolicy Bypass -Command "& '%PSScript%'"

:PowerShell
SET PowerShellDir=C:\Windows\System32\WindowsPowerShell\v1.0
SET PSScript=%temp%\~tmpNtwkDiagTrblsht.ps1
IF EXIST "%PSScript%" DEL /Q /F "%PSScript%"
ECHO $aFile = "%AnswerFile%">"%PSScript%"
ECHO $dFolder = "%DiagFolder%">>"%PSScript%"
ECHO $var = Get-TroubleshootingPack -Path "C:\Windows\diagnostics\system\Networking">>"%PSScript%"
ECHO Invoke-TroubleshootingPack -Pack $var -AnswerFile $aFile -Unattended -Result $dFolder>>"%PSScript%"
GOTO :EOF

进一步运行验证

此过程运行后,您应该在 Windows 中看到事件查看器系统记录和事件 ID4100来自“Diagostics-Neworking”源,带有“信息级别”消息,表明

网络诊断框架已完成运行的诊断阶段,但未发现网络问题。

在此处输入图片描述


更多资源

相关内容