![Windows(或 PowerShell)是否记录我在命令行中执行的所有操作?](https://linux22.com/image/1396720/Windows%EF%BC%88%E6%88%96%20PowerShell%EF%BC%89%E6%98%AF%E5%90%A6%E8%AE%B0%E5%BD%95%E6%88%91%E5%9C%A8%E5%91%BD%E4%BB%A4%E8%A1%8C%E4%B8%AD%E6%89%A7%E8%A1%8C%E7%9A%84%E6%89%80%E6%9C%89%E6%93%8D%E4%BD%9C%EF%BC%9F.png)
是否可以让 Windows 记录我输入的每个命令以及我在控制台上看到的输出?有时我发现我想查看 2 小时前所做的事情,只是为了确保我正确输入了某个参数。
答案1
是的。您可以使用Start-Transcript
和Stop-Transcript
。
您给了我一个想法,将其放入我的 PowerShell 配置文件中,以便它自动启动。这就是我想到的:
$transcriptDir = Join-Path ([Environment]::GetFolderPath("MyDocuments")) PowerShellTranscripts
if (-not (Test-Path $transcriptDir))
{
New-Item -Type Directory $transcriptDir
}
$dateStamp = Get-Date -Format ((Get-culture).DateTimeFormat.SortableDateTimePattern -replace ':','.')
try
{
Start-Transcript "$transcriptDir\Transcript.$dateStamp.txt"
}
catch [System.Management.Automation.PSNotSupportedException]
{
# ISE doesn't allow transcripts.
Write-Host "No transcript. Not supported in this host."
}
答案2
注意:我准备好了这个答案,然后意识到你可能专门询问在 PowerShell 中执行的命令。为了不抹杀我的努力,我打算发布这篇文章,以防它能帮助那些想在 DOS 中做同样事情的人。读了一点,看起来 @dangph 可能给出了正确答案对于 PowerShell。
记录命令保存到文件:
doskey /history >> commands.log
将您的命令历史记录附加到日志中。
这页详细说明,但简而言之,您可以在关闭 DOS 模拟器之前将命令传输到所选文件中。您不必在完成后才执行此操作(不确定缓冲区是否适用于大量命令)
记录命令输出保存到文件:
你可能想要某物喜欢...
dir >> a.txt | type a.txt
。正如该答案中提到的,您正在将命令输出写入文件,然后打印文件的内容,但我认为它符合要求,如果您将它用于每个命令,它将是自动的。如果您稍加调整,我认为您可能可以修改以写入命令以及输出。
也许有人可以改进或建议一个更加用户友好的解决方案,在执行语句时同时完成这两项操作(附加命令和结果)。
答案3
(History -count 1000).CommandLine 作为本机 powershell 解决方案有什么问题。
为了在命令行上记录所有内容(出于安全目的),我会使用
HKEY: HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\Audit\
RegEntry: ProcessCreationIncludeCmdLine_Enabled
Value: 1 (DWORD)