Windows(或 PowerShell)是否记录我在命令行中执行的所有操作?

Windows(或 PowerShell)是否记录我在命令行中执行的所有操作?

是否可以让 Windows 记录我输入的每个命令以及我在控制台上看到的输出?有时我发现我想查看 2 小时前所做的事情,只是为了确保我正确输入了某个参数。

答案1

是的。您可以使用Start-TranscriptStop-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)

相关内容