स्वचालित रूप से पॉवरशेल सत्र के अंत में इतिहास निर्यात करें


4

मैं उल्लिखित लिपियों का उपयोग करके अपने पॉवर्सशेल इतिहास को निर्यात कर सकता हूं विषय पर तकनीकी पेज ,

Get-History | Export-Clixml ~\PowerShell\history.xml

और मैं स्वचालित रूप से सहेजे गए इतिहास को लोड कर सकता हूं, जब मैं अपने अधिकार प्रोफ़ाइल में इस लाइन का उपयोग करके पॉवर्सशेल सत्र शुरू कर सकता हूं

Import-Clixml ~\PowerShell\history.xml | Add-History

जो महान है, लेकिन इसे अपने आप होने की जरूरत है।

लेकिन क्या कोई ऐसा तरीका है जिससे सत्र से बाहर निकलने पर मेरा इतिहास अपने आप सहेज लिया जा सकता है? मैं उपयोग कर रहा हूँ ConEmu मेरे सांत्वना के रूप में।

जवाबों:


1

यहां एक वैकल्पिक दृष्टिकोण है जो एक अलग PowerShell शॉर्टकट का उपयोग किए बिना आपके इतिहास को बनाए रखता है।

से लिया गया https://software.intel.com/en-us/blogs/2014/06/17/giving-powershell-a-persistent-history-of-commands

निम्न मोड के लिए चलाकर PowerShell के व्यवस्थापक संस्करण को खोलें और जानें कि आपके पास PowerShell का कौन सा संस्करण है:

$PSVersionTable.PSVersion

इसे चलाने के लिए आपको 3 से अधिक संस्करण की आवश्यकता होगी, यदि आपके पास एक पुराना संस्करण है, तो इसे अपडेट करें।

निम्न आदेश को चलाकर PowerShell को मॉड्यूल सहित स्क्रिप्ट आयात या उपयोग करने की अनुमति दें:

set-executionpolicy remotesigned

PsGet को स्थापित करें और निम्नलिखित कमांड निष्पादित करके आपके द्वारा आवश्यक मॉड्यूल स्थापित करें:

(new-object Net.WebClient).DownloadString("http://psget.net/GetPsGet.ps1") | iex
import-module PsGet
install-module PsUrl
install-module PSReadline

निम्नलिखित स्क्रिप्ट बनाएँ

$HistoryFilePath = Join-Path ([Environment]::GetFolderPath('UserProfile')) .ps_history
Register-EngineEvent PowerShell.Exiting -Action { Get-History | Export-Clixml $HistoryFilePath } | out-null
if (Test-path $HistoryFilePath) { Import-Clixml $HistoryFilePath | Add-History }
# if you don't already have this configured...
Set-PSReadlineKeyHandler -Key UpArrow -Function HistorySearchBackward
Set-PSReadlineKeyHandler -Key DownArrow -Function HistorySearchForward

फ़ाइल को इस रूप में सहेजें C:\Users\<username>\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1, जहां आपको अपने पीसी पर सही फ़ोल्डर नाम से बदलना चाहिए। सभी फ़ाइलों के लिए "प्रकार के रूप में सहेजें" विकल्प को बदलने के लिए मत भूलना।

PowerShell को बंद करें और इसे फिर से खोलें ताकि यह हमारे द्वारा सहेजी गई स्क्रिप्ट का उपयोग करना शुरू कर दे।

अब से,

get-history

आपके द्वारा टाइप किए गए पिछले कुछ सौ आदेशों को पुनः प्राप्त करेगा और आप तीर कुंजी के साथ उनके बीच स्क्रॉल कर सकते हैं।


1
बाहरी लिंक टूट या अनुपलब्ध हो सकते हैं, जिस स्थिति में आपका उत्तर उपयोगी नहीं होगा। कृपया अपने उत्तर के भीतर आवश्यक जानकारी शामिल करें और एट्रिब्यूशन और आगे पढ़ने के लिए लिंक का उपयोग करें। धन्यवाद।
fixer1234

मेरे पास समय नहीं है लेकिन मैंने सोचा कि यह अभी भी किसी के लिए उपयोगी हो सकता है। मैंने इसे समुदाय विकि के रूप में चिह्नित किया है इसलिए इसके लिए जाना।
Rory

इसके बाद लिंक को केवल टिप्पणियों के रूप में पोस्ट करें। यदि आपके पास इस पर ध्यान देने का समय नहीं है, तो दूसरों को सुधारने के लिए इसे न छोड़ें
Jamal

1
जहाँ तक मैं कर सकता हूँ, और एक स्वसंपूर्ण उत्तर के रूप में अद्यतन किया गया। मुझे नाश्ते पर 5 मिनट लग गए। यह अच्छा होगा यदि लोक दोनों अपने स्वयं के उत्तर निर्धारित करते हैं, और जहां संभव हो, मदद करते हैं, मेरे पास कुछ उत्तर हैं जो दूसरों द्वारा बेहतर रूप से सुधार किए गए थे, और इसलिए हमारे पास अधिकार संपादित हैं, नहीं?
Journeyman Geek

यह वास्तव में काम किया। मुझे यकीन नहीं है कि क्या install-module PsUrl के लिए कदम है, यह मेरी मशीन पर विफल रहा है, लेकिन स्क्रिप्ट वैसे भी काम करता है। यह PSReadline का उपयोग करता है, लेकिन PsUrl का उपयोग नहीं करता है
stib

3

सही नहीं है, लेकिन आप एक कमांड का उपयोग करके शुरू कर सकते हैं, जो पॉवरशेल से बाहर निकलने पर सभी इतिहास को बचाने के लिए एक कमांड बता रहा है।

  1. अपने डेस्कटॉप पर राइट-क्लिक करें और चुनें नया - & gt; शॉर्टकट
  2. शॉर्टकट पथ के रूप में निम्नलिखित दर्ज करें:
powershell -NoExit -Command $histlog = Register-EngineEvent -SourceIdentifier ([System.Management.Automation.PsEngineEvent]::Exiting) -Action {Get-History | Export-Clixml ~\PowerShell\history.xml}
  1. अपने शॉर्टकट के लिए एक नाम चुनें और क्लिक करें ठीक

यदि आप इस शॉर्टकट से लॉन्च करते हैं, तो आपका इतिहास बच जाएगा ~ \ PowerShell \ history.xml जब भी PowerShell को एक निकास घटना मिलती है।


महान! धन्यवाद। यदि आप डिफ़ॉल्ट पॉवरशेल कंसोल का उपयोग नहीं करना चाहते (कहते हैं कि आप कॉनम्यू का उपयोग करना चाहते हैं) तो आप इसे नए कंसोल को शुरू करने पर चलने वाले डिफ़ॉल्ट कार्यों में जोड़ सकते हैं।
stib

3

ऐसा करने का एक और तरीका है, बस किसी के लिए यह मददगार है।

Powershell अब कमांड इतिहास को स्वचालित रूप से "% userprofile% \ AppData \ Roaming \ Microsoft \ Windows \ PowerShell \ PSReadline \ ConsoleHost_history.txt" में संग्रहीत करता है

इतिहास प्रदर्शित करने के लिए, मैंने अपनी प्रोफ़ाइल में एक फ़ंक्शन जोड़ा है जैसे ...

function h2 {
    $h = [System.Environment]::ExpandEnvironmentVariables("%userprofile%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt")
    cat $h;
}

अब मैं पूरा इतिहास प्रदर्शित करने के लिए "h2" टाइप कर सकता हूं। विशेष रूप से चतुर नहीं है, लेकिन प्रभावी है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.