使用runas命令运行Python脚本时日志输出无法捕获的问题排查
先确认目标用户对日志目录的权限
用runas /user:domain\username cmd.exe启动该用户的命令行窗口,然后执行echo test > C:/temp/test.txt。如果这一步失败,说明该用户没有C:/temp的读写权限,脚本根本没法生成日志文件——这是最常见的原因。给C:/temp目录添加该用户的读写权限即可。核对Python环境是否一致
你在IDE里用的Python和runas用户的Python可能不是同一个版本。先在IDE里执行where python拿到完整路径(比如C:\Python310\python.exe),然后用runas命令时指定这个完整路径运行脚本:runas /user:domain\username "C:\Python310\python.exe 你的脚本绝对路径"。同时在该用户的cmd里执行pip list,确认pyodbc已经安装,避免依赖缺失导致脚本直接崩溃。检查runas的工作目录
runas默认会用该用户的主目录作为工作目录,如果你的脚本依赖相对路径的文件,或者需要在特定目录下执行,就会出问题。可以用cmd的cd命令指定工作目录:runas /user:domain\username "cmd /c cd 脚本所在的绝对目录 && python script.py",确保脚本在正确的上下文里运行。验证日志初始化的时机
看看脚本里的logging配置是不是放在所有业务代码之前。比如如果数据库连接代码写在logging.basicConfig()之前,那连接出错的时候日志还没初始化,自然不会写入文件。把logging的配置代码移到脚本最开头,确保任何错误都能被捕获记录。捕获控制台输出排查启动问题
直接把脚本的输出和错误重定向到文件:runas /user:domain\username "python script.py > C:/temp/console_log.txt 2>&1"。这样哪怕日志没生成,也能看到脚本启动时的错误(比如找不到Python、依赖缺失等),帮你快速定位问题。检查用户环境变量
在runas启动的cmd里执行echo %PATH%,确认Python的安装目录在环境变量里。如果不在,要么用Python的完整路径执行,要么给该用户的系统环境变量添加Python目录。
内容的提问来源于stack exchange,提问作者iBeMeltin

