【问题标题】:View history of commands executed using Python in CMD or Powershell在 CMD 或 Powershell 中查看使用 Python 执行的命令的历史记录
【发布时间】:2020-08-25 23:08:33
【问题描述】:

Get-History 允许人们在 Powershell 中查看执行命令的历史记录。我想知道是否有办法让我使用 Popen 使用 Python 执行 dir,然后使用 Get-History for CMD.exe 或 Powershell 之类的东西来查看 Python 执行的该命令的历史记录。

【问题讨论】:

  • cmd.exe 没有 Get-History。 PowerShell cmdlet 仅在 PowerShell 实例中工作。 PowerShell 不知道您使用其他可执行文件做了什么,除非您从 PowerShell 启动它并使用重定向(stdout 的东西)将结果发送回 PowerShell。您从 PowerShell 运行的任何命令都在 PowerShell 历史记录中。从 PowerShell 运行外部可执行文件是常见且有据可查的用例。整个网络和 Youtube 上都有很多关于该主题的文档和视频。

标签: python windows powershell cmd


【解决方案1】:

如果您从脚本调用子进程,则不会有任何历史记录,除非您在某个文件中手动跟踪它。

如果您从交互式命令行解释器调用它,它将存储在解释器历史记录中,但是,它存储被解释的每一行代码,因此您必须以某种方式解析历史记录,仅针对这些行例如使用了 popen。

【讨论】:

  • 所以除非我将它存储在一个文件中,否则绝对没有办法查看执行的命令历史记录?
  • 是的。从 Python 的角度来看,调用子进程就像调用任何其他函数一样——唯一的区别是将控制权交给操作系统。考虑到这一点,这意味着将您曾经执行过的每一行代码的副本保存在历史文件中。脚本实际上有数千行长,想象它们不断执行并填充一些历史文件。目的是什么?唯一的应用程序是日志记录,这需要程序员来完成(当然,有框架可以做到这一点,但你必须故意使用它们)。
猜你喜欢
  • 1970-01-01
  • 2013-08-17
  • 2016-02-15
  • 1970-01-01
  • 2014-09-02
  • 2017-10-21
  • 1970-01-01
  • 2011-09-27
  • 2021-08-07
相关资源
最近更新 更多