Powershell实现WIN10移动热点自动开启和保持在线

原创 2020-05-31 11:15  阅读 183 次 评论 0 条

WIN10自带了移动热点功能,该方法采用WIFI DIRECT,经测试,这种方法开启移动热点比传统的hostednetwork功耗低很多,但是不方便的地方是:每次开机都需要去手动开启;如果没有连接过段时间会自动关闭.所以需要建立脚本,实现开机自动开启和每隔一段时间检验热点是否保持在线,如果已经断开则继续打开.

1. 必须以管理员权限在SHELL中执行以下命令,才能自动以管理员权限运行PS1脚本

set-executionpolicy remotesigned 即可执行脚本

2.设置任务计划,使脚本开机启动,具体操作参考

首先按Win+X,启动“计算机管理”,添加新的任务计划,具体设置如下:

 

点击确定,然后重启即可,第一次启动需要一定的时间才开启.

确保 操作 配置文件中的操作如下,启动程序是: %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe参数是:-WindowStyle Hidden -command ". 'c:\hotspot.ps1'"

 

$connectionProfile = [Windows.Networking.Connectivity.NetworkInformation,Windows.Networking.Connectivity,ContentType=WindowsRuntime]::GetInternetConnectionProfile()
$tetheringManager = [Windows.Networking.NetworkOperators.NetworkOperatorTetheringManager,Windows.Networking.NetworkOperators,ContentType=WindowsRuntime]::CreateFromConnectionProfile($connectionProfile)
 
Add-Type -AssemblyName System.Runtime.WindowsRuntime
$asTaskGeneric = ([System.WindowsRuntimeSystemExtensions].GetMethods() | ? { $_.Name -eq 'AsTask' -and $_.GetParameters().Count -eq 1 -and $_.GetParameters()[0].ParameterType.Name -eq 'IAsyncOperation`1' })[0]
Function Await($WinRtTask, $ResultType) {
    $asTask = $asTaskGeneric.MakeGenericMethod($ResultType)
    $netTask = $asTask.Invoke($null, @($WinRtTask))
    $netTask.Wait(-1) | Out-Null
    $netTask.Result
}
Function AwaitAction($WinRtAction) {
    $asTask = ([System.WindowsRuntimeSystemExtensions].GetMethods() | ? { $_.Name -eq 'AsTask' -and $_.GetParameters().Count -eq 1 -and !$_.IsGenericMethod })[0]
    $netTask = $asTask.Invoke($null, @($WinRtAction))
    $netTask.Wait(-1) | Out-Null
}
 
# Check whether Mobile Hotspot is enabled
$tetheringManager.TetheringOperationalState
 
do
{
    sleep -Mi 100000
    # Start Mobile Hotspot
    if ( $tetheringManager.TetheringOperationalState -eq 'Off') {
    Await ($tetheringManager.StartTetheringAsync()) ([Windows.Networking.NetworkOperators.NetworkOperatorTetheringOperationResult])
    }
    $tetheringManager.TetheringOperationalState
}while(1 -eq 1)
 
 
# Stop Mobile Hotspot
#Await ($tetheringManager.StopTetheringAsync()) ([Windows.Networking.NetworkOperators.NetworkOperatorTetheringOperationResult])

附件下载:

1.hotspot

本文地址:http://51blog.com/?p=10405
关注我们:请关注一下我们的微信公众号:扫描二维码广东高校数据家园_51博客的公众号,公众号:数博联盟
版权声明:本文为原创文章,版权归 jnussl 所有,欢迎分享本文,转载请保留出处!

发表评论


表情