Computer >> कंप्यूटर >  >> प्रणाली >> Windows Server

पावरशेल कंसोल में पिछला कमांड इतिहास

डिफ़ॉल्ट रूप से Windows PowerShell (साथ ही कमांड प्रॉम्प्ट) केवल वर्तमान PowerShell सत्र में निष्पादित कमांड के इतिहास को सहेजता है। जब आप पावरशेल कंसोल विंडो को बंद करते हैं या अपने कंप्यूटर को पुनरारंभ करते हैं, तो आपके द्वारा टाइप किए गए पावरशेल कमांड का इतिहास कहीं भी सहेजा नहीं जाता है। बैश की तुलना में, यह एक महत्वपूर्ण कमी है। पावरशेल 5.0 . से शुरू हो रहा है विंडोज 10 (विंडोज सर्वर 2016) में पेश किया गया, पीएस कंसोल में दर्ज सभी कमांड अब डिफ़ॉल्ट रूप से एक सादे टेक्स्ट लॉग फ़ाइल में सहेजे गए हैं।

पावरशेल 5.0 और नए में कमांड इतिहास

मान लीजिए आपने कुछ जटिल पावरशेल कमांड टाइप और निष्पादित किया है। विंडोज 10 और विंडोज सर्वर 2016 में, कंप्यूटर को पुनरारंभ करने के बाद भी, आप एक नया पावरशेल सत्र खोल सकते हैं और ऊपर तीर कुंजी दबा सकते हैं। आपके द्वारा दर्ज किया गया अंतिम आदेश स्क्रीन पर प्रदर्शित होना चाहिए। यदि आप "अप" कुंजी दबाते रहते हैं, तो आप पहले से निष्पादित सभी कमांड देखेंगे। इस प्रकार, “ऊपर तीर . कुंजियों का उपयोग करते हुए ” और “नीचे तीर ” आप PoS कमांड के इतिहास को स्क्रॉल कर सकते हैं और पहले टाइप किए गए कमांड को फिर से निष्पादित कर सकते हैं।

पावरशेल के पुराने संस्करणों में, वर्तमान सत्र में कमांड का इतिहास बंद होने के बाद सहेजा नहीं जा रहा है। अप का उपयोग करना /नीचे कुंजियाँ, आप केवल वर्तमान PS सत्र के कमांड इतिहास को स्क्रॉल कर सकते हैं या गेट-इतिहास का उपयोग करके पूरे कमांड इतिहास को सूचीबद्ध कर सकते हैं। cmdlet.

आप वर्तमान पावरशेल सत्र में पहले निष्पादित कमांड के बारे में अधिक विस्तृत जानकारी प्रदर्शित कर सकते हैं, जिसमें कमांड स्थिति और प्रारंभ/समाप्ति/अवधि समय शामिल है:

गेट-हिस्ट्री | प्रारूप-सूची-संपत्ति *

पावरशेल कंसोल में पिछला कमांड इतिहास

डिफ़ॉल्ट रूप से, विंडोज 10 में पावरशेल पिछले 4096 कमांड को सहेजता है जो प्रत्येक उपयोगकर्ता %userprofile%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt की प्रोफाइल में स्थित एक सादे टेक्स्ट फ़ाइल में संग्रहीत होते हैं।

इतिहास को PowerShell और PowerShell ISE के लिए अलग से संग्रहीत किया जाता है।

पावरशेल कंसोल में पिछला कमांड इतिहास

यदि किसी PowerShell कमांड को निष्पादित होने में लंबा समय लगता है, तो आप उसे केवल कमांड इतिहास में उसके पूर्ण होने पर ही देखेंगे।

cmd.exe में, आप वर्तमान सत्र में कमांड इतिहास को निम्न के साथ प्रदर्शित कर सकते हैं:

डोस्की /इतिहास

एफ7 कुंजी का उपयोग cmd इतिहास के माध्यम से खोजने के लिए किया जाता है।

पावरशेल कंसोल में पिछला कमांड इतिहास

पावरशेल कमांड इतिहास कैसे खोजें?

यदि आप ऊपर/नीचे तीरों का उपयोग करके संपूर्ण पावरशेल कमांड इतिहास को स्क्रॉल नहीं करना चाहते हैं, तो आप कीबोर्ड शॉर्टकट CTRL+R का उपयोग करके कमांड इतिहास खोज सकते हैं। (रिवर्स सर्च) और CTR +S (आगे की खोज)। कुंजी संयोजन दबाएं और उस कमांड का हिस्सा टाइप करना शुरू करें जिसे आप पहले से निष्पादित कमांड में खोजना चाहते हैं। आपके द्वारा दर्ज किया गया पाठ किसी भी स्थिति में कमांड इतिहास में मिलेगा (F8 का उपयोग करके PowerShell में खोज के विपरीत) या Shift+F8 , जो केवल लाइन की शुरुआत से मैचों को देखने की अनुमति देता है)। पावरशेल कंसोल को खोज स्ट्रिंग के अनुरूप पिछला कमांड प्रदर्शित करना चाहिए। कमांड में लाइन मैच हाइलाइट किए गए हैं।

यदि पाया गया आदेश आपको सूट नहीं करता है, तो इतिहास के माध्यम से खोज जारी रखने के लिए, CTRL+R दबाएं /CTRL+S फिर। परिणामस्वरूप, खोज पैटर्न के अनुरूप निम्न कमांड स्क्रीन पर दिखाई देगा।

पावरशेल कंसोल में पिछला कमांड इतिहास

F8 . का उपयोग करना कुंजी, आप इतिहास में वह आदेश पा सकते हैं जो वर्तमान कमांड लाइन पर पाठ से मेल खाता है। उदाहरण के लिए, प्राप्त करें- दर्ज करें और F8 press दबाएं . इस टेक्स्ट से मेल खाने वाले कमांड हिस्ट्री में आखिरी एंट्री मिलेगी। इतिहास में अगले कमांड पर जाने के लिए F8 press दबाएं फिर से।

पावरशेल कंसोल में पिछला कमांड इतिहास

आप # . का भी उपयोग कर सकते हैं कमांड इतिहास के माध्यम से खोजने के लिए चरित्र। उदाहरण के लिए, Get-WMI with से शुरू होने वाली अंतिम कमांड को खोजने के लिए , टाइप करें #get-wmi और टैब दबाएं चाभी। पैटर्न से मेल खाने वाला अंतिम कमांड कंसोल में दिखाई देगा:

पावरशेल कंसोल में पिछला कमांड इतिहास

कमांड इतिहास क्लासिक विंडोज पावरशेल और नए पावरशेल कोर दोनों में समान रूप से काम करता है (यदि आपने अपना पीओएसएच संस्करण पहले ही अपग्रेड कर लिया है)।

Notepad.exe विंडो में पिछले PoSh कमांड की सूची प्राप्त करने के लिए, कमांड चलाएँ:

नोटपैड (Get-PSReadLineOption | चयन करें -ExpandProperty HistorySavePath)

पावरशेल कंसोल में पिछला कमांड इतिहास इतिहास में किसी क्वेरी से मेल खाने वाले आदेशों की सूची प्रदर्शित करने के लिए, आप इसका उपयोग कर सकते हैं:

गेट-हिस्ट्री | चयन-स्ट्रिंग -पैटर्न "प्राप्त करें-"

पावरशेल कंसोल में पिछला कमांड इतिहास

PSReadLine मॉड्यूल के साथ PowerShell कमांड इतिहास को प्रबंधित करना

PowerShell 5.0 में कमांड इतिहास कार्यक्षमता स्वयं Windows प्रबंधन फ्रेमवर्क में नहीं बनाई गई है, बल्कि यह तृतीय-पक्ष PSReadLine पर आधारित है। मॉड्यूल, जो पावरशेल कंसोल की कार्यक्षमता को महत्वपूर्ण रूप से बढ़ाता है। PSReadLine कंसोल में सिंटैक्स को हाइलाइट करता है, यह आपके माउस के साथ टेक्स्ट के चयन और CTRL+C का उपयोग करके इसे कॉपी/पेस्ट करने के लिए ज़िम्मेदार है। और CTRL+V . विंडोज 10 में यह मॉड्यूल C:\Program Files\WindowsPowerShell\Modules\PSReadline में स्थित है। फ़ोल्डर और स्वचालित रूप से आयात किया जाता है जब PowerShell कंसोल प्रारंभ होता है।

PSReadLine विंडोज के पिछले संस्करणों के लिए स्टैंडअलोन पावरशेल 5.0 (या कभी नहीं) इंस्टॉलर में शामिल नहीं है। इस प्रकार, यदि आप पिछले Windows संस्करणों (Windows 7/8.1 और Windows Server 2008R2/2012R2) में PowerShell कमांड इतिहास कार्यक्षमता का उपयोग करना चाहते हैं, तो Windows प्रबंधन फ्रेमवर्क 5.1 को स्थापित करने के अलावा, आपको PackageManagement मॉड्यूल के माध्यम से PSReadLine मॉड्यूल स्थापित करने की आवश्यकता होगी (पूर्व में वनगेट) कमांड का उपयोग करके ऑनलाइन रिपॉजिटरी से:

इंस्टॉल-मॉड्यूल PSReadLine

पावरशेल में कमांड इतिहास के प्रबंधन के लिए PSReadLine मॉड्यूल के कार्यों की एक पूरी सूची और उन्हें सौंपी गई कुंजियों को कमांड के साथ प्रदर्शित किया जा सकता है:

प्राप्त करें-PSReadlineKeyHandler | ? {$_.फंक्शन -लाइक '*हिस्ट*'}

<पूर्व>कुंजी       फ़ंक्शन                विवरण --------      --------               ----------- UpArrow   पिछलाइतिहास         इतिहास में पिछले आइटम के साथ इनपुट को बदलें अगला आइटम नीचे तीर अगला इतिहास               historyCtrl+r     ReverseSearchHistory    इतिहास को पीछे की ओर अंतःक्रियात्मक रूप से खोजेंCtrl+s    ForwardSearchHistory    इतिहास को अंतःक्रियात्मक रूप से आगे खोजेंAlt+F7    ClearHistory            कमांड लाइन इतिहास से सभी आइटम निकालें (PowerShell इतिहास नहीं) F8 -       इतिहास खोज इतिहास के लिए अगला इतिहास खोजें जो वर्तमान इतिहास खोज के साथ शुरू होता है अगर इनपुट खाली हैShift+F8  HistorySearchForward    इतिहास में अगले आइटम की खोज करें जो वर्तमान इनपुट से शुरू होता है - जैसे NextHistory यदि इनपुट खाली हैअनबाउंड   ViSearchHistoryBackward इतिहास में एक नया खोज पीछे की ओर प्रारंभ करता है। अनबाउंड   BeginningOfHistory      इतिहास में पहले आइटम पर जाएं EndOfHistory           इतिहास के अंतिम आइटम (वर्तमान इनपुट) पर जाएं

पावरशेल कंसोल में पिछला कमांड इतिहास

कमांड इतिहास को Get-PSReadlineOption . का उपयोग करके कॉन्फ़िगर किया जा सकता है और सेट-PSReadlineOption सीएमडीलेट। वर्तमान PSReadline सेटिंग्स को इस कमांड का उपयोग करके देखा जा सकता है:

प्राप्त करें-PSReadlineOption | हिस्ट्रीनोडुप्लीकेट्स, मैक्सिममहिस्ट्रीकाउंट, हिस्ट्रीसर्चकर्सरमूव्सटूएंड, हिस्ट्रीसर्चकेस सेंसिटिव, हिस्ट्रीसेवपाथ, हिस्ट्रीसेव स्टाइल चुनें।

पावरशेल कंसोल में पिछला कमांड इतिहास

निम्नलिखित PSReadline मापदंडों की सेटिंग्स हमारे लिए महत्वपूर्ण हो सकती हैं:

  • इतिहासNoDuplicates - निर्धारित करता है कि समान कमांड को सहेजना है या नहीं;
  • अधिकतम इतिहास गणना - संग्रहीत आदेशों की अधिकतम संख्या (डिफ़ॉल्ट रूप से अंतिम 4096 आदेश सहेजे जाते हैं);
  • HistorySearchCursorMovesToEnd — निर्धारित करता है कि खोज करते समय आपको कमांड के अंत तक जाना है या नहीं;
  • HistorySearchCaseSensitive - निर्धारित करता है कि क्या खोज केस संवेदनशील है (PS कमांड इतिहास डिफ़ॉल्ट रूप से केस संवेदनशील नहीं है);
  • इतिहास सेवपाथ - उस फ़ाइल का पथ दिखाता है जिसमें कमांड संग्रहीत है;
  • इतिहास सेव स्टाइल - आदेशों को सहेजने की ख़ासियत निर्धारित करता है:
    • बढ़ते रूप से सहेजें — कमांड चलाने के बाद सहेजे जाते हैं (डिफ़ॉल्ट रूप से);
    • SaveAtExit PowerShell कंसोल बंद होने पर इतिहास सहेजा जाता है;
    • कुछ नहीं बचाएं - कमांड इतिहास को सहेजना अक्षम करें।

आप सेट-PSReadlineOption . का उपयोग करके PSReadLine मॉड्यूल की सेटिंग बदल सकते हैं . उदाहरण के लिए:

सेट-PSReadlineOption -HistorySaveStyle SaveAtExit

पावरशेल कंसोल में पिछला कमांड इतिहास

लॉग फ़ाइल में सहेजे गए PowerShell कमांड की संख्या बढ़ाने के लिए, कमांड चलाएँ:

सेट-PSReadlineOption -MaximumHistoryCount 10000

इसलिए, निष्पादित पावरशेल कमांड के इतिहास को सहेजने की क्षमता PoSh कंसोल को cmd पर प्राथमिकता देने के तर्कों में से एक है।

पावरशेल कंसोल इतिहास कमांड कैसे साफ़ करें?

जैसा कि हमने ऊपर बताया, PSReadline मॉड्यूल सभी PowerShell कंसोल कमांड को टेक्स्ट फ़ाइल में सहेजता है। हालाँकि, कुछ मामलों में, व्यवस्थापक को PowerShell कंसोल (क्रेडेंशियल्स, पासवर्ड, पते, व्यक्तिगत डेटा, आदि) में विभिन्न संवेदनशील जानकारी दर्ज करनी होती है। इस प्रकार, कोई अन्य सर्वर व्यवस्थापक या हमलावर एक सादे पाठ फ़ाइल में इतिहास डेटा तक पहुंच सकता है। सुरक्षा कारणों से, आपको निष्पादित पावरशेल कमांड के इतिहास को साफ़ करने या कमांड इतिहास को पूरी तरह से अक्षम करने की आवश्यकता हो सकती है।

साफ़-इतिहास cmdlet का उपयोग केवल वर्तमान पावरशेल सत्र के इन-मेमोरी कमांड इतिहास को साफ़ करने के लिए किया जा सकता है। यह केवल पिछले आदेशों की सूची को साफ़ करता है जो Get-History cmdlet प्रदर्शित करता है।

आप इतिहास से केवल एक पिछली कमांड को हटा सकते हैं:

क्लियर-इतिहास -गणना 1-नवीनतम

या एक विशिष्ट पैटर्न के साथ सभी आदेश साफ़ करें:
क्लियर-इतिहास -कमांडलाइन *सेट-विज्ञापन*

पिछले पावरशेल कमांड के इतिहास को पूरी तरह से साफ़ करने के लिए, आपको कंसोलहोस्ट_हिस्टोरी.txt फ़ाइल को हटाना होगा, जिसमें वे PSReadline मॉड्यूल द्वारा लिखे गए हैं। आप वर्तमान पावरशेल इतिहास फ़ाइल स्थान प्राप्त कर सकते हैं और इसे कमांड से हटा सकते हैं:

निकालें-आइटम (Get-PSReadlineOption).HistorySavePath

उसके बाद, पावरशेल कंसोल विंडो बंद करें।

यदि आप किसी टेक्स्ट फ़ाइल में पावरशेल कमांड के इतिहास को सहेजना पूरी तरह से अक्षम करना चाहते हैं, तो कमांड चलाएँ:

सेट-PSReadlineOption -HistorySaveStyle SaveNothing

पावरशेल कंसोल में पिछला कमांड इतिहास

किसी अन्य सत्र में PowerShell कमांड इतिहास को निर्यात/आयात कैसे करें?

कभी-कभी विभिन्न कंप्यूटरों पर अक्सर उपयोग किए जाने वाले पावरशेल कमांड का एक ही सेट होना सुविधाजनक होता है। आप अपने कंप्यूटर पर वर्तमान कमांड इतिहास को एक xml फ़ाइल में निर्यात कर सकते हैं और इसे अन्य कंप्यूटरों में आयात कर सकते हैं। साथ ही यह कंसोलहोस्ट_हिस्ट्री.txt फ़ाइल को वांछित कंप्यूटर पर उपयोगकर्ता प्रोफ़ाइल में कॉपी करके किया जा सकता है।

मौजूदा सत्र से फ़ाइल में कमांड निर्यात करने के लिए, आप Export-Clixml . का उपयोग कर सकते हैं सीएमडीलेट:

गेट-हिस्ट्री | Export-Clixml -Path c:\ps\commands_hist.xml

एक फ़ाइल से दूसरे PoSh सत्र (स्थानीय या किसी अन्य कंप्यूटर पर) में कमांड इतिहास आयात करने के लिए:

ऐड-इतिहास -इनपुटऑब्जेक्ट (आयात-क्लिक्सएमएल-पथ c:\ps\commands_hist.xml)

पावरशेल कंसोल में पिछला कमांड इतिहास

PowerShell सत्र के अंत में एक फ़ाइल में स्वचालित रूप से पिछले आदेशों को निर्यात करने के लिए, आप स्क्रिप्ट को PoSh सत्र समाप्ति घटना से बाँध सकते हैं (!! सत्र आवश्यक रूप से निकास के साथ समाप्त होना चाहिए। आदेश, केवल PowerShell विंडो को बंद करने के बजाय):

$HistFile =Join-Path ([Environment]::GetFolderPath('UserProfile')) .ps_history
Register-EngineEvent PowerShell.Exiting -Action { Get-History | एक्सपोर्ट-क्लिक्सएमएल $HistFile } | out-null
if (टेस्ट-पथ $HistFile) {आयात-Clixml $HistFile | ऐड-हिस्ट्री }


  1. विंडोज पॉवरशेल और कमांड प्रॉम्प्ट के बीच अंतर

    यदि आप विंडोज ऑपरेटिंग सिस्टम का उपयोग कर रहे हैं, तो आपको अक्सर सीएमडी या कमांड प्रॉम्प्ट का सामना करना पड़ता है, जैसा कि बहुत से लोग जानते हैं। कमांड प्रॉम्प्ट एक कमांड-लाइन दुभाषिया है जिसे विंडोज के सभी संस्करणों के साथ विंडोज एनटी से सभी तरह से भेज दिया गया है। कमांड प्रॉम्प्ट एक कमांड-लाइन इंट

  1. विंडोज 10 में कमांड प्रॉम्प्ट और पावरशेल के लिए लीगेसी कंसोल को सक्षम या अक्षम करें

    कमांड प्रॉम्प्ट के लिए लीगेसी कंसोल को सक्षम या अक्षम करें और विंडोज 10 में पावरशेल:  विंडोज 10 की शुरुआत के साथ, कमांड प्रॉम्प्ट को नई सुविधा के साथ लोड किया गया है, जिसके बारे में अधिकांश उपयोगकर्ता नहीं जानते हैं, उदाहरण के लिए आप लाइन रैपिंग, कमांड प्रॉम्प्ट का आकार बदलने, कमांड विंडो की पारदर्श

  1. कमांड प्रॉम्प्ट या पॉवरशेल से ऐप्स कैसे इंस्टॉल करें

    सॉफ़्टवेयर इंस्टॉल करना एक जटिल, दोहराव वाली और त्रुटि-प्रवण प्रक्रिया हो सकती है। इसका उपयोग करने से पहले, आपको पहले इसे डाउनलोड करना होगा, स्थापना प्रक्रिया शुरू करनी होगी, और इसके स्थापित होने तक प्रतीक्षा करनी होगी। इससे आपका काफी समय बर्बाद होता है। कमांड प्रॉम्प्ट से ऐप्स इंस्टॉल करने का तरीका