首页 > 解决方案 > 为什么在子 shell 中运行 winrs 会改变它相对于它使用的用户的行为?

问题描述

test.bat

@echo off
for /f "delims=" %%i in ('winrs /r:REMOTE_MACHINE /u:DIFF_USER_ACCOUNT /p:PASS /noprofile "echo %PYTHONPATH%"') do set dest_dir=%%i
echo %dest_dir%

该脚本旨在远程进入REMOTE_MACHINE并打印出PYTHONPATHenv var 的内容。我故意通过/noprofile开关,因为我不想REMOTE_MACHINE使用我的帐户(也存在于盒子上)访问,这是winrs.

最终发生的是脚本执行并远程REMOTE_MACHINE使用我的用户帐户,而不是DIFF_USER_ACCOUNT指定的。我确定这一点的方式是因为PYTHONPATH两个帐户之间的差异。

我还创建了一个新的环境变量,它只存在于DIFF_USER_ACCOUNT并且批处理脚本无法访问它。

在 shell 中运行相同的命令'winrs /r:REMOTE_MACHINE /u:DIFF_USER_ACCOUNT /p:PASS /noprofile "echo %PYTHONPATH%"',或者只在没有子 shell 的脚本中运行,可以提供正确的行为。

为什么会发生这种情况,我该如何解决?

标签: windowsbatch-filewinrs

解决方案


推荐阅读