Можно ли в Windows регистрировать каждую команду, которую я набираю, и вывод, который я вижу на консоли? Иногда я обнаруживаю, что хочу посмотреть, что я сделал 2 часа назад, просто чтобы убедиться, что я правильно ввел определенный параметр.
3 ответа
Да. Вы можете использовать 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."
}
Примечание: я подготовил этот ответ, а затем понял, что вы, вероятно, спрашиваете конкретно о командах, выполняемых в PowerShell. Вместо того, чтобы стирать мои усилия, я собираюсь опубликовать статью на случай, если это поможет кому-то, кто хочет сделать то же самое в DOS. Немного прочитав, похоже, что @dangph, вероятно, дал правильный ответ для PowerShell.
Чтобы записать команды в файл:
doskey /history >> commands.log
чтобы добавить историю команд в журнал.
Эта страница подробно объясняет, но в двух словах вы можете передать ваши команды в файл по выбору, прежде чем закрывать эмулятор DOS. Вам не придется делать это до тех пор, пока вы не закончите (не уверен, что буфер вступает в игру с большим объемом команд)
Чтобы записать вывод команды в файл:
Вы, вероятно, хотели бы что-то вроде ...
dir >> a.txt | type a.txt
. Как упоминалось в этом ответе, вы записываете вывод команды в файл, а затем распечатываете содержимое файла, но я думаю, что это соответствует требованиям и будет автоматическим, если вы будете использовать его с каждой командой. Если вы немного подправите, я думаю, что вы могли бы изменить также, чтобы написать команду и вывод .
Возможно, кто-то может улучшить или предложить более удобное для пользователя решение для одновременного выполнения (добавления команды и результатов) по мере выполнения операторов.
Что не так с (История-счет 1000).CommandLine как собственное решение PowerShell.
Для регистрации всего в командной строке (в целях безопасности) я бы использовал
HKEY: HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\Audit\
RegEntry: ProcessCreationIncludeCmdLine_Enabled
Value: 1 (DWORD)