前言
wsl作为windows下使用linux平台有效的手段之一,本文可以让win作为工作站,外部系统用来连接win下的wsl系统。
自动启动服务脚本
https://zhuanlan.zhihu.com/p/47733615
开机自启+端口转发
wslname = "Ubuntu-20.04" '要转发端口的Linux系统名称,可以通过 wsl -l 命令查看
wslport = "2222" 'Linux系统里要转发的端口
winport = "2222" '转发到Windows上的端口
'以下代码无需修改
If WScript.Arguments.Length = 0 Then
'用于以管理员权限运行,不然没有权限配置端口转发
CreateObject("Shell.Application").ShellExecute "wscript.exe" _
, """" & WScript.ScriptFullName & """ RunAsAdministrator", , "runas", 1
WScript.Quit
End if
set fso = CreateObject("Scripting.FileSystemObject")
set objShell = CreateObject("WScript.Shell")
objShell.Run "cmd /c wsl -d Ubuntu-20.04 -u root /etc/init.wsl start", 0, True
writeip = objShell.Run("cmd /c ""wsl -d "+wslname+" -u root hostname -I"">C:\Windows\Temp\wslip.tmp",0,True)
set f = fso.OpenTextFile("C:\Windows\Temp\wslip.tmp", 1)
wslip = f.ReadAll()
f.Close()
command = "cmd /c ""netsh interface portproxy add v4tov4 listenport="+winport+" listenaddress=0.0.0.0 connectport="+wslport+" connectaddress="+wslip
forwarding = objShell.Run(command,0,True)
fso.deleteFile("C:\Windows\Temp\wslip.tmp")
自动启动
1. 方法一
按win+r输入shell:startup再按回车键,就会打开当前用户的启动文件夹。
2. 方法二
如果你想要.vbs脚本以管理员权限自动启动,而不需要用户确认,最有效的方法是通过设置计划任务,配置它以最高权限运行。这样可以绕过UAC(用户账户控制)提示,实现无需手动确认即可自动以管理员权限执行脚本。以下是详细步骤:
创建计划任务以管理员权限自动运行.vbs脚本
打开任务计划程序:
在Windows搜索框中输入“任务计划程序”并打开它。
创建新任务:
在任务计划程序的右侧窗格中,选择“创建任务”以开始新任务的创建过程。
配置任务的常规属性:
在“常规”选项卡中,为你的任务命名。
勾选“使用最高权限运行”选项。
选择适合你需求的其他常规选项,例如运行的用户账户。
设置触发器:
切换到“触发器”选项卡,点击“新建”。
设置触发器,在系统启动时、登录时或按照特定的计划运行脚本。
调整其他设置以满足你的具体需求,然后点击“确定”。
添加操作以运行脚本:
切换到“操作”选项卡,点击“新建”。
在“操作”下拉菜单中选择“启动程序”。
在“程序或脚本”框中输入输入你的.vbs脚本的路径,例如C:\path\to\your\script.vbs。
点击“确定”保存操作。
配置其他选项(如果需要):
可以在“条件”和“设置”选项卡中调整任务的其他属性,以满足特定的运行条件和行为。
保存并退出:
完成设置后,点击“确定”保存新任务。
可能会要求你输入管理员账户的密码,以验证权限。
测试
可以输入该命令查看 是否转发成功
wsl --list --running
netsh interface portproxy show all