PowerShell中Start-Transcript无法捕获neo4j-admin命令输出至日志文件
解决Start-Transcript无法捕获neo4j-admin输出的问题
问题核心是neo4j-admin这类外部程序的输出可能发送到了标准错误流(stderr),而PowerShell的Start-Transcript默认只捕获标准输出流(stdout)——控制台能看到内容是因为PowerShell会自动显示stderr,但转录时没把这部分内容包含进去。
给你两种可行的解决办法:
方法一:重定向stderr到stdout
修改执行neo4j-admin的命令,把错误流重定向到输出流,让Start-Transcript能捕获到所有内容:
Start-Transcript -Path log.txt V:\neo4j\relate-data\dbmss\dbms-a5914a53-3b7d-42d0-a050-8bd6058e5e98\bin\neo4j-admin dump --database=neo4j --to=V:\neo4j\dumps 2>&1 Stop-Transcript
这里的2>&1是PowerShell的重定向语法,意思是把标准错误流(编号2)的内容转发到标准输出流(编号1)。
方法二:直接用Start-Process捕获双流
如果不想用Start-Transcript,可以直接通过Start-Process把标准输出和错误输出都写入同一个文件:
Start-Process -FilePath "V:\neo4j\relate-data\dbmss\dbms-a5914a53-3b7d-42d0-a050-8bd6058e5e98\bin\neo4j-admin.exe" ` -ArgumentList "dump --database=neo4j --to=V:\neo4j\dumps" ` -NoNewWindow ` -RedirectStandardOutput "log.txt" ` -RedirectStandardError "log.txt"
-NoNewWindow保证在当前控制台执行,-RedirectStandardOutput和-RedirectStandardError分别指定两个流的输出文件(这里写同一个文件就能合并内容)。
内容的提问来源于stack exchange,提问作者user19460307
相关产品推荐
相关产品推荐

