PowerShell: Сохранение истории в файл

Разбираюсь с PowerShell ISE, который при попытке запустить скрипт выдавал мне такую ошибку:

D:\Distr-free\System\Tweaks\PowerShell\current.ps1 : Cannot dot-source this command because it was defined in a different language mode. To invoke this command without importing its contents, omit the '.' operator.
    + CategoryInfo          : InvalidOperation: (:) [current.ps1], NotSupportedException
    + FullyQualifiedErrorId : DotSourceNotSupported,current.ps1

В процессе поисков профиля PowerShell, наткнулся на такой файл:
«C:\Users\Denis\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt»
Оказывается вся история команд, запущенных в этой консоли сохраняются в файл! Причем они добавляются туда инкрементно…

За эту фичу отвечает модуль PSReadline, поэтому чтобы остановить запись истории в файл, можно:

  • Изменить путь для сохранения логов на новый (не подходит — меняем шило на мыло):
    Set-PSReadlineOption -HistorySavePath 'C:\My\New\Secure\Path\log.txt'
  • Удалить этот модуль:
    Remove-Module PSReadline
  • Отключить опцию сохранения лога в файл:
    Set-PSReadlineOption -HistorySaveStyle SaveNothing

Применяем третий пункт — теперь лучше:

PS C:\Windows\system32> (Get-PSReadlineOption).HistorySaveStyle
SaveNothing

Можно удалить файл с историей — он больше не нужен.

Чтобы в дальнейшем настройка не менялась, нужно добавить эту запись в профиль. Для чего создаём файл настроек профиля:
1. Запускаем «Windows PowerShell ISE»
2. Вставляем в окно «Untitled1.ps1» код:

 if (!(Test-Path -Path $PROFILE ))
{ New-Item -Type File -Path $PROFILE -Force }

3. Выполняем этот скрипт
4. Открываем в любом редакторе файл «C:\Documents and Settings\<USER>\My Documents\WindowsPowerShell\Microsoft.PowerShellISE_profile.ps1»
5. Вставляем туда строки:

Set-PSReadlineOption -HistorySaveStyle SaveNothing


Подписаться
Уведомление о
guest
0 Комментарий
Oldest
Newest Most Voted
Inline Feedbacks
View all comments