win + R 输入shell:startup,在文件夹中创建一个.vbs脚本:
Set objShell = CreateObject("WScript.Shell")
PowerShellCode = "Add-Type -AssemblyName System.Runtime.WindowsRuntime" & vbCrLf & _
" $asTaskGeneric = ([System.WindowsRuntimeSystemExtensions].GetMethods() | ? { $_.Name -eq 'AsTask' -and $_.GetParameters().Count -eq 1 -and $_.GetParameters()[0].ParameterType.Name -eq 'IAsyncOperation`1' })[0]" & vbCrLf & _
" Function Await($WinRtTask, $ResultType) {" & vbCrLf & _
" $asTask = $asTaskGeneric.MakeGenericMethod($ResultType)" & vbCrLf & _
" $netTask = $asTask.Invoke($null, @($WinRtTask))" & vbCrLf & _
" $netTask.Wait(-1) | Out-Null" & vbCrLf & _
" $netTask.Result" & vbCrLf & _
" }" & vbCrLf & _
" Function AwaitAction($WinRtAction) {" & vbCrLf & _
" $asTask = ([System.WindowsRuntimeSystemExtensions].GetMethods() | ? { $_.Name -eq 'AsTask' -and $_.GetParameters().Count -eq 1 -and !$_.IsGenericMethod })[0]" & vbCrLf & _
" $netTask = $asTask.Invoke($null, @($WinRtAction))" & vbCrLf & _
" $netTask.Wait(-1) | Out-Null" & vbCrLf & _
" }" & vbCrLf & _
" $connectionProfile = [Windows.Networking.Connectivity.NetworkInformation,Windows.Networking.Connectivity,ContentType=WindowsRuntime]::GetInternetConnectionProfile()" & vbCrLf & _
" $tetheringManager = [Windows.Networking.NetworkOperators.NetworkOperatorTetheringManager,Windows.Networking.NetworkOperators,ContentType=WindowsRuntime]::CreateFromConnectionProfile($connectionProfile)" & vbCrLf & _
" if ($tetheringManager.TetheringOperationalState -eq 1) {" & vbCrLf & _
" 'Hotspot is already On!'" & vbCrLf & _
" } else {" & vbCrLf & _
" 'Hotspot is off! Turning it on'" & vbCrLf & _
" Await ($tetheringManager.StartTetheringAsync()) ([Windows.Networking.NetworkOperators.NetworkOperatorTetheringOperationResult])" & vbCrLf & _
" }"
objShell.Run "powershell -executionpolicy remotesigned -command """ & PowerShellCode & """", 0, False
WScript.Quit