在开发应用程序时,我在 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 主机运行。