0


Windows 11 实现移动热点自启动

原文链接:https://blog.iyatt.com/?p=16784

背景

公司的 WiFi 用起来很卡,但是电脑有线使用网络又是正常的,另外我用的那台台式机是有无线网卡的,平时就是用电脑开热点给手机用,但是每次开机都要自己手动启动就麻烦,有时候还忘了。所以到处查找方法尝试,终于找到一个可行的方案。

测试环境:
Windows 11 专业工作站版 23H2
PowerShell 5.1(使用预装的版本)

操作

设置好热点信息

{Win}
  • {I}
    
    打开设置,前往网络和Internet-》移动热点
    file

主要就是设置网络名称和密码,频段根据需要自己选择
file

然后打开移动热点,可以看到多出来一个节能,把它关掉就不会自动停用 WiFi 了
file

允许 PowerShell 脚本执行

Windows 默认禁止 PowerShell 运行脚本文件,
以管理员身份打开
file

执行

Set-Executionpolicy RemoteSigned

file

创建 PowerShell 脚本文件用于实现 WiFi 打开

脚本基于 https://gist.github.com/primaryobjects/8b54f7f4219960127f1f620116315a37
修改。
创建一个文本文件,将下面的内容粘粘进去,保存后扩展名改为 .ps1

$PSVersionTable"-"* 100

Add-Type-AssemblyName System.Runtime.WindowsRuntime
$asTaskGeneric = ([System.WindowsRuntimeSystemExtensions].GetMethods()|Where-Object{$_.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()|Where-Object{$_.Name -eq'AsTask'-and$_.GetParameters().Count -eq 1 -and!$_.IsGenericMethod })[0]$netTask = $asTask.Invoke($null, @($WinRtAction))$netTask.Wait(-1)|Out-Null}Function Get_TetheringManager(){$connectionProfile = [Windows.Networking.Connectivity.NetworkInformation,Windows.Networking.Connectivity,ContentType=WindowsRuntime]::GetInternetConnectionProfile()$tetheringManager = [Windows.Networking.NetworkOperators.NetworkOperatorTetheringManager,Windows.Networking.NetworkOperators,ContentType=WindowsRuntime]::CreateFromConnectionProfile($connectionProfile)return$tetheringManager;}Function SetHotspot($Enable){$tetheringManager = Get_TetheringManager

    if($Enable-eq 1){if($tetheringManager.TetheringOperationalState -eq 1){"Hotspot is already On!"}else{"Hotspot is off! Turning it on"
            Await ($tetheringManager.StartTetheringAsync())([Windows.Networking.NetworkOperators.NetworkOperatorTetheringOperationResult])}}else{if($tetheringManager.TetheringOperationalState -eq 1){"Hotspot is on! Turning it off"
            Await ($tetheringManager.StopTetheringAsync())([Windows.Networking.NetworkOperators.NetworkOperatorTetheringOperationResult])}else{"Hotspot is already Off!"}}}# Define a function to check the status of the hotspotFunction Check_HotspotStatus(){$tetheringManager = Get_TetheringManager
    return$tetheringManager.TetheringOperationalState -eq"Off"}# Define a function to start the hotspotFunction Start_Hotspot(){$tetheringManager = Get_TetheringManager
    Await ($tetheringManager.StartTetheringAsync())([Windows.Networking.NetworkOperators.NetworkOperatorTetheringOperationResult])}Function exitCountdown($sec){for(;$sec-ge 0;--$sec){"$sec"Start-Sleep-Seconds 1
    }exit 0
}if($args.Length -eq 0){while(Check_HotspotStatus){
        SetHotspot 1
        Start-Sleep-Seconds 2
        if(Check_HotspotStatus){"Failure.Try again in 2s."Start-Sleep-Seconds 2
            continue}else{"Success.Exit in 10s."
            exitCountdown 10
            exit 0
        }}"Hotspot is already.Exit in 10s."
    exitCountdown 10
}else{switch($args[0]){"0"{
            SetHotspot 0
            break}"1"{
            SetHotspot 1
            break}
        default {"Invalid parameter, please enter 1 to turn on hotspot, enter 0 to turn off hotspot"exit 1
        }}}

建议放置到固定路径,比如我放置在**%HOMEPATH%**家目录下,命名为 hotspot.ps1
file

file

这个脚本提供了三种模式(注意这个脚本在 Windows 11 预装的 PowerShell 5.x 可以运行,但在自己安装的新的 7.x 无法使用)

# 用于实现自启动
powershell 【hotspot.ps1路径】

# 手动启动热点
powershell 【hotspot.ps1路径】1

# 手动关闭热点
powershell 【hotspot.ps1路径】1

创建自动执行任务

打开任务计划程序
file

创建任务
file

自己为任务命名
file

新建触发器,比如可以选择解锁时(输入密码认证进入桌面时)
file

新建操作
程序或脚本处填C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
添加参数处填上面脚本文件的所在路径,比如我这里是**%HOMEPATH%\hotspot.ps1**
file

条件栏可能会默认勾选使用交流电才启动任务(插上电源时),去掉的话不插电源默认也启用(主要针对笔记本电脑,勾选了没插电源不会执行)
file

设置完,确定即可,可以按

{Win}
  • {L}
    
    锁定,再尝试登录验证脚本是否按预期的执行
    file

本文转载自: https://blog.csdn.net/qq_36349997/article/details/140780453
版权归原作者 astuv 所有, 如有侵权,请联系我们删除。

“Windows 11 实现移动热点自启动”的评论:

还没有评论