我一直在尝试编写一个powershell脚本,它可以自动设置和配置我的windows工作区,但目前在第一次执行它时,我一直在尝试将输入重定向到WSL。问题的核心是,Ubuntu第一次启动时会提示输入用户名和密码,然后登录到bash shell。我尝试将输入行写到文本文件中,如下所示:
Username
Password
Password
exit然后,我尝试将wsl的输入重定向到该文件:
Start-Process ubuntu2004.exe -RedirectStandardInput stdin.txt -NoNewWindow -Wait当执行ws1只是开始向Enter new UNIX username: adduser: only one or two names allowed发送垃圾邮件时,上面的代码并不起作用。我尝试在CMD中使用<输入重定向执行同样的操作,但结果是相同的。
发布于 2021-02-14 19:32:17
这不完全是您问题的答案,但在我看来,ansible更适合于这样的任务。
我自己最近开始对在wsl中组装一个工作区感兴趣,ansible对我来说似乎是最好的解决方案。
在开始构建之前,您将需要执行最少的步骤(创建一个用户并安装几个包,所有这些都可以放在自述文件中),但之后将没有任何限制。
您可以通过github上的ansible找到几个现成的wsl组装示例。
发布于 2021-02-16 06:58:15
在新的Ubuntu WSL实例中设置用户名/密码的一些想法:
当运行debian.exe (如ubuntu2004.exe)时,我让它运行安装,然后当它开始询问默认用户名/密码时,我按Ctrl+C退出。此时,安装了WSL实例,但只安装了root用户。我假设您的脚本可以让该命令运行一段时间,然后终止该进程以复制该命令。
然后,您应该能够从脚本中运行wsl -u root useradd --create-home --user-group --groups adm,dialout,cdrom,floppy,sudo,audio,dip,video,plugdev,netdev --password "encryptedPassword" username (有关创建加密密码的信息,请参阅here )。我认为这会让你像WSL设置的那样成为一个普通的Ubuntu用户。
然后,您需要创建一个/etc/wsl.conf文件(instructions),让实例知道该用户是默认用户,或者LxRunOffline将其列为其功能之一。
wsl --export <distroname> <imagename.tgz>,然后您可以通过复制tgz并执行wsl --import <DistroName> <DirectoryWhereYouwantItToLive> <imagename.tgz>,在设置新的Windows主机时导入它。如果您愿意,您可以使用所需的WSL配置保持此映像为最新,以便在重新构建Windows主机时不必重新创建它。也就是说,这就是我遵循@Mystic的建议,使用Ansible将我的WSL“配置存储为代码”的地方。它不仅允许我重新创建我WSL实例,而且还允许我在设置(或重置) Linode主机或其他Linux系统时重新创建相同的配置。
https://stackoverflow.com/questions/66089558
复制相似问题