มีประวัติ CMD ทั่วโลกที่ต่อเนื่องหรือไม่?


99

บางครั้งฉันลืมว่าลักษณะที่แน่นอนของคำสั่ง CMD มีลักษณะอย่างไรแล้วฉันต้องการค้นหาประวัติ CMD ของฉันเอง เห็นได้ชัดว่าในเซสชั่นเดียวกันคุณสามารถเรียกดูได้ด้วยปุ่มลูกศรขึ้นและลง แต่จะเกี่ยวกับประวัติของเซสชัน CMD ในอดีตหรือไม่ มีไฟล์บันทึกประวัติที่ถูกเขียนลงไปหรือไม่หรือมันทั้งหมดไปที่เนอร์วาน่าดิจิทัลหรือไม่?

ขอบคุณ!


คุณสามารถจี้คำสั่ง exit เพื่อบันทึกล็อกโดยอัตโนมัติก่อนที่จะออก: doskey exit=doskey /history ^>^> C:\path\to\cmdhistory.log $T exit $*แต่คุณจะต้องหาวิธีการดำเนินการนี้โดยอัตโนมัติเมื่อเริ่มต้นเซสชันพร้อมท์คำสั่งแต่ละคำสั่ง PS:ตรวจสอบให้แน่ใจเส้นทางของแฟ้มบันทึกนั้นเขียนได้ C:\ ไม่สามารถเขียนได้สำหรับพรอมต์คำสั่งที่ไม่ใช่ผู้ดูแลระบบ
ADTC

@ADTC: การทำงานอัตโนมัติควรจัดการ 'การเริ่มต้นแต่ละครั้ง': superuser.com/a/302553/333316หรือstackoverflow.com/a/17405182/2868801
dave_thompson_085

คำตอบ:


29

ไม่ไม่สามารถบันทึกประวัติพรอมต์คำสั่งของ Windows เมื่อสิ้นสุดเซสชัน


3
จริงเหรอ คุณรู้เรื่องนี้ได้อย่างไร? ขออภัยเพื่อสอบปากคำคุณผมคิดว่าคุณมีสิทธิ แต่วิธี u สามารถทราบเว้นแต่ U โปรแกรมสิ่งแช่ง;)
raoulsson

7
ตกลงให้ฉันใช้ถ้อยคำใหม่ :-) ล่ามคำสั่งของ Windows ("cmd.exe") ไม่ได้ให้การสนับสนุนสำหรับการบันทึก / ส่งออก / เก็บประวัติหากเป็นเช่นนั้น Microsoft ก็ไม่ได้จัดทำเอกสารและไม่มีใครเคยสามารถทำได้ เพื่อหามัน แน่นอนว่าคุณสามารถพยายามหลีกเลี่ยงสิ่งนั้นได้เช่นเดียวกับที่ฌอนแนะนำ แต่มี (หรือดูเหมือนว่า) ไม่มีการสนับสนุนในตัวสำหรับสิ่งนี้
Massimo

18
คุณสามารถกด F7 เพื่อดูรายการประวัติของเซสชันปัจจุบัน
jftuga

4
เซสชันปัจจุบันเป็นคำหลักที่นี่
Massimo

3
คุณสามารถดู / บันทึกประวัติด้วยการเรียกใช้doskey.exe /history(นั่นคือที่มาของทางลัด F7, BTW) แต่ไม่มีวิธีที่จะโหลดกลับในเซสชันถัดไปของคุณ
Coderer

68

ไม่เพียง แต่ตรวจสอบจาก: http://mridgers.github.io/clink/ทำให้ cmd.exe มีประสิทธิภาพมากขึ้น การอ้างอิงคุณสมบัติจากหน้าโครงการ:

Powerful Bash-like line editing from GNU's Readline library.
Superior path completion (TAB).
Paste from clipboard (Ctrl-V).
Support for the completion of executables/commands, and environment variables.
Undo/Redo (Ctrl-_ or Ctrl-X, Ctrl-U)
Improved command line history.
Persists across sessions.
Searchable (Ctrl-R and Ctrl-S).
History expansion (e.g. !!, !<string>, and !$).
Scriptable completion using Lua.

3
เสียงกริ๊กแก้ไขทุกอย่าง
Still.Tony

5
มีแผนที่จะรวมไว้เป็นค่าเริ่มต้นใน Windows หรือไม่ : D
Jaime Hablutzel

คุณสามารถตั้งค่า~/.inputrcเมื่อใช้เสียงกริ๊ก? (และคุณรู้หรือไม่ว่าสามารถใช้ Console หรืออะไรก็ได้)
Mike HR

เห็นได้ชัดว่าเห็นเอกสารgithub.com/mridgers/clink/blob/master/docs/clink.md
Baris Demiray

... ยกเว้นนามแฝง clinkเกลียดdoskey; ลืมนามแฝงที่กำหนดมาอย่างระมัดระวัง นั่นเป็นเหตุผลที่ฉันหยุดใช้ แม้ว่าฉันจะคิดถึงคุณสมบัติทั้งหมด

15

Massimo นั้นถูกต้องว่าประวัติพรอมต์คำสั่งของคุณไม่คงอยู่ตลอดเซสชัน คุณสามารถคว้าสิ่งนี้ได้ด้วยตนเองก่อนปิดพรอมต์ของคุณโดยพิมพ์doskey / history> history.txt

หรือ ... คุณสามารถใช้PowerShellเป็นพรอมต์ CMD ของคุณและทำตามโพสต์นี้เพื่อยืนยันประวัติของคุณในเซสชันต่างๆ


11

คุณสามารถใช้เสียงกริ๊ก

Clink รวมเชลล์ Windows cmd.exe ดั้งเดิมเข้ากับคุณสมบัติการแก้ไขบรรทัดคำสั่งอันทรงพลังของไลบรารี GNU Readline ซึ่งให้ความสามารถในการเติมเต็มประวัติและความสามารถในการแก้ไขบรรทัดให้สมบูรณ์

วิธีที่ง่ายที่สุดในการติดตั้งเสียงกริ๊กใช้chocolatey เมื่อคุณติดตั้ง chocolatey คุณสามารถติดตั้งเสียงกริ๊กโดยการพิมพ์

choco install clink

เริ่มต้นจากครั้งถัดไปที่คุณเริ่มต้น cmd.exe มันควรเก็บประวัติข้ามเซสชัน


ในที่สุดก็ตัดสินใจที่จะให้Chocolateyยิงเพราะโพสต์นี้ การติดตั้งนั้นง่ายเหมือนbrewใน macOS และตอนนี้ฉันมีพรอมต์คำสั่งเหมือนทุบตีใน Windows!
TranslucentCloud

6

สามารถบันทึกประวัติปัจจุบันไปยังไฟล์ได้

`$ doskey /history > somefile.txt`

แต่ดูเหมือนว่าไม่มีวิธีที่จะโหลดมันกลับเป็นประวัติศาสตร์ เป็นไปได้เพียงใช้อาร์กิวเมนต์บรรทัดคำสั่งเพื่อโหลดและดำเนินการทุกบรรทัด

cmd.exe /K somefile.txt

สิ่งที่มีประโยชน์ในการโหลดรายการของ doskey macros การเรียกใช้นี้อาจรวมอยู่ในทางลัดดังนั้นคุณไม่จำเป็นต้องพิมพ์ทุกครั้ง ข้อมูลอ้างอิงนี้มีข้อมูลเพิ่มเติมเกี่ยวกับวิธีการนี้

มีคำถามคล้ายกันเกี่ยวกับ Superuserที่นำเสนอทางเลือกบางประการรวมถึงเสียงกริ๊กตามที่แนะนำโดย @RobertBak


อืมหากต้องการโหลดกลับเข้าไปในประวัติคุณไม่จำเป็นต้องบันทึกลงในไฟล์. bat แล้วเรียกใช้หรือไม่
Pacerier

1
@Pacerier ที่รันคำสั่งอีกครั้งจะรวมพวกเขากลับมาในประวัติศาสตร์ แต่ก็น่าจะมีผลข้างเคียงที่มีขนาดใหญ่ ลองนึกภาพว่าคุณลบบางไฟล์ผ่านเชลล์แล้วสร้างมันใหม่นอกเชลล์ผ่านกระบวนการที่ยาวนานและเจ็บปวด การโหลดประวัติผ่านขั้นตอนของคุณจะลบไฟล์อีกครั้งโดยไม่คาดคิด
mMontu

@Pierier คุณรู้ว่า "เรียกใช้" หมายถึงการดำเนินการคำสั่งเหล่านั้นใช่ไหม? มันไม่เพียงแค่โหลดมันลงในประวัติ แต่จริง ๆ แล้วปล่อยให้พวกเขามีผลกระทบบางอย่างในระบบของคุณ
ADTC

1

Command History: เพื่อเปิดใช้งานประวัติคำสั่ง (ที่สามารถเข้าถึงได้โดยใช้ปุ่มลูกศรขึ้นและลง) เพียงแค่เรียกใช้ doskey ที่พรอมต์คำสั่ง ตัวอย่างเช่นในการสร้างประวัติคำสั่ง 100 องค์ประกอบ:

doskey /listsize=100

อ้างอิง: https://users.cs.jmu.edu/bernstdh/web/common/help/ntshell.php


3
ไม่ตอบคำถามเลยใช่ไหม
Chopper3

1
ใช้ไม่ได้กับ Windows 10
TranslucentCloud

1

เสียงกริ๊กเป็นสิ่งที่ดีและผู้เขียนเผยแพร่แพคเกจช็อคโกแลตในทุกรุ่น แต่ฉันจะแนะนำ DeepBlueCLI

คุณสามารถใช้https://github.com/sans-blue-team/DeepBlueCLIเพื่อตั้งค่า ID เหตุการณ์ความปลอดภัยของ Windows 4688

สำหรับ PowerShell นั้น DeepBlueCLI ยังใช้การบันทึกโมดูล (PowerShell เหตุการณ์ 4013) และการบันทึกบล็อกสคริปต์ (4104) มันไม่ได้ใช้การถอดความ

ประโยชน์เพิ่มเติมคือมันบันทึกแฮชของ exe บรรทัดคำสั่งในบันทึกเหตุการณ์ AppLocker ที่มา: https://docs.microsoft.com/en-us/windows-server/identity/ad-ds/manage/component-updates/command-line-process-auditing

นอกจากนี้เนื่องจากการแก้ปัญหานี้ใช้โครงสร้างพื้นฐานของบันทึกเหตุการณ์ของ Windows คุณสามารถสอบถามผ่าน WMI หรือ Get-EventLogPowerShell ด้วยเสียงกริ๊กคุณต้องเรียนรู้เครื่องมืออื่นเพื่อตรวจหารูปแบบการทำงานของทั้งระบบหรือเครือข่าย


1
เหตุการณ์ 4688 เป็นกุญแจสำคัญและนั่นคือร้านค้าส่วนกลางที่ Windows บันทึกคำสั่งที่เรียกใช้ทั้งหมด เครื่องมืออื่น ๆ ทั้งหมดกำลังอ่านเพื่อหากิจกรรมนี้ ขอบคุณ แต่โดยค่าเริ่มต้นจะไม่เปิดใช้งาน: itprotoday.com/strategy/…
Peter Teoh
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.