在 WSL2 启动时在 Windows 中运行任务

在 WSL2 启动时在 Windows 中运行任务

在开发应用程序时,我在 WSL2 上运行服务器,我需要从 Windows 主机上的浏览器连接到它。为此,我需要在每次启动 WSL 时绑定一些端口并创建防火墙规则。这是通过位于 Windows 计算机上的 powershell 脚本完成的。现在,我在任务计划程序中有一个任务,当我登录 Windows 时它会运行此脚本。它运行正常,但当我手动重新启动 WSL 时它不会触发(我有时会这样做)。要在 WSL 中启动时运行脚本,我可以在.profile或中调用它.bashrc,但我想在 Windows 上运行它,而不是在 WSL 中。有办法吗?

答案1

你走对了路。只需.profile使用视窗(不是 Linux)PowerShell 解释器:

/mnt/c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe "C:\myscript.ps1"

它可能不需要完全合格,但这样做可能更安全。

如果需要,您还可以将路径从 WSL 转换为 Windows,例如,powershell.exe $(wslpath -w script/myscript.ps1)如果您想将脚本存储在 WSL ext4 文件系统上(例如,您可能希望它相对于您的主目录)。

当然,pwsh.exe如果您使用的是 PowerShell 核心,则请替换。并且如果它 (a) 不在您的路径中或 (b) 您还安装了 Linux PowerShell 核心版本,则完全限定它。

由于您使用在 Windows 上运行的 PowerShell 解释器,因此所有命令(端口转发、防火墙规则)都将针对 Windows 主机运行。

相关内容