问题
公司让我们用笔记本电脑工作,每天都要背着电脑回家,但电脑挺沉的,背着确实有点累。所以我就把公司的笔记本设置了远程桌面,在家也能连上用。
不过有时候远程连接之后,Wi-Fi会断开,这样远程桌面就用不了了。
(rustDesk,ToDesk都存在一定的问题,还是远程桌面比较好用)
通用解决方式
- 勾选“即使网络未广播也能连接(SSID)”;
- 修改“高级设置”
将“用户身份验证”--> "用户或计算机身份验证",并将红色都勾选上。
盲点发现华生了。 在我的机器上所有勾选都被禁用掉。无法修改,并且IT管理员也比较忙,就想其他的办法进行解决。
--WinSw方案。
思考
最终的目的:需要能够探测笔记本是否连上对应的WIFI,如果没有连接上,那么需要自动连接上。 如果连接上了,则输出日志即可。
windows不熟悉的情况下,首先需要找到对应的命令:netsh。让kimi生成一个大致可以用的脚本,改吧改吧后:
function CheckWLAN {
Start-Transcript -Path "D:\code\script\netmgr.log"
$wifiName = "#SSID"
Write-Host "================== $(Get-Date) =================="
# 检查无线网络是否已经连接
$interface = netsh wlan show interfaces | Select-String -Pattern "$wifiName"
if ($interface -ne $null) {
Write-Host "Already connected to $wifiName."
} else {
# 如果无线网络没有连接,则尝试连接
Write-Host "Not connected to $wifiName. Attempting to connect..."
# 这里假设你已经有一个名为"VRVIU"的无线网络配置文件
netsh wlan connect name=$wifiName
if ($?) {
Write-Host "Successfully connected to $wifiName."
} else {
Write-Host "Failed to connect to $wifiName."
}
}
Write-Host "==================end=================="
Stop-Transcript
}
while($true){
CheckWLAN
Start-Sleep -Seconds 60
}
其中Start-Tracnscript将Write-Host的输出重定向的指定日志中。 每次都会覆盖,无需担心日志问题。
将以上脚本作为windows后台进程执行即可。
这样可选择性会比较多:
- windows计划任务;
- windows服务;
- supervisord-win;
以上都有一定的问题:
#1#2 我对windows的功能不熟悉,也不知道准确性,
#3 需要安装python, pip 进行下载,还需要加入到windows进行管理。
那么同事推荐一个组件:WinSW。
WinSW
功能:WinSW 将任何应用程序作为 Windows 服务进行包装和管理。可以直接下载二进制文件即可使用:
与supervisord进行对比,它可以将配置文件所定义的程序内置到windows服务中进行管理。
- 编写一个配置文件:
<service>
<id>checkWifi</id>
<name>checkWifi</name>
<description>Used to detect the presence of wifi</description>
<executable>powershell.exe</executable>
<arguments>-ExecutionPolicy Bypass -File "D:\code\golearn\work\winScript\wifi.ps1"</arguments>
<onfailure action="restart" delay="20 sec"/>
</service>
说明:将上面的脚本通过powershell.exe执行;
- 使用WinSw将服务发布到Windows服务中;
./WinSW-x64.exe stop wifi.xml
- 启动服务以及其他命令
# 启动服务
./WinSW-x64.exe start wifi.xml
# 停止服务
./WinSW-x64.exe stop wifi.xml
# 查看运行状态
./WinSW-x64.exe status wifi.xml
# 刷新服务文件
./WinSW-x64.exe refresh wifi.xml
# 卸载服务
./WinSW-x64.exe uninstall wifi.xml
配置文件定义:github.com/winsw/winsw…
总结
在当前所从事的行业领域中,开发Windows平台下的后台服务是一项常见需求,其中多数任务需借助PowerShell脚本来实现。
得益于现今先进的生成式人工智能模型的支持,在日常工作中我倾向于结合使用Kimi、Poe以及ChatGPT等工具,这些工具能够高效地辅助生成所需的脚本或命令行代码。
此外,对于Windows环境下后端服务的部署与管理,计划采用WinSW(Windows Service Wrapper)作为解决方案之一。该工具的功能定位类似于Linux系统中的SupervisorD,允许用户以较为统一且简便的方式管理和监控后台进程,从而减少了对Windows操作系统内部复杂特性的直接依赖。