PowerShellFar — PowerShell host и автоматизация Far Manager

Здесь можно обсудить ваш любимый плагин.
User avatar
NightRoman
Posts: 6225
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 42 times
Been thanked: 62 times
Contact:

PowerShellFar — PowerShell host и автоматизация Far Manager

Post by NightRoman »

Latest post of the previous page:

mlt, у меня ваши две команды, добавить тип и создать бмп, работают. Надо больше подробностей. Какие версии FarNet и PowerShellFar? Что еще в скрипте делается до создания бмп? Если поискать System.Drawing.dll в %FARHOME% во всех папках, то где именно находится, сколько их находится?
mlt
Posts: 6
Joined: Mon 08 Jan, 2024 20:05
Has thanked: 2 times

PowerShellFar — PowerShell host и автоматизация Far Manager

Post by mlt »

Far 3.0.6116.0 x64. FarNet 7.0.9. System.Drawing.dll наличествует лишь в C:\Program Files\Far Manager\FarNet\Modules\PowerShellFar\runtimes\win\lib\net7.0\ref\System.Drawing.dll.

Действительно, по какой-то причине те 2 строки теперь не вызывают ошибок. Зато теперь другая (только в ps:).



Что примечательно, так этот скрипт работает работал на ура до обновления Far до 3.0.6226.0 x64 если его целиком вставить в F2 меню ($Path=".") используя Alt+F4 для правки, что я и хотел изначально. Не уверен, что стоит там держать большие скрипты. Как это объяснить я не знаю.

Я был сильно уверен, что у меня только умолчательная версия powershell. Однако Far использует иную.


Обновил Far & FarNet до 8.1.5, поставил PowerShell 7.4.1 . Без изменений. Вызов через pwsh из строки Far работает.

Полный текст скрипта ниже. Если есть очевидное решение, то было бы интересно в чем дело. Но я, в итоге, я вызываю скрипт как через cmd в Main Menu.

User avatar
NightRoman
Posts: 6225
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 42 times
Been thanked: 62 times
Contact:

PowerShellFar — PowerShell host и автоматизация Far Manager

Post by NightRoman »

Хорошо, что обновили FarNet до 8.1.5, но и PowerShellFar надо обновить, 8.1.2.0.
У вас старая версия, судя по PSVersion 7.3.4 (должно быть 7.4.1)

Вообще, полезные версии можно получить так:

Code: Select all

ps: "Far $($Far.FarVersion)`nFarNet $($Far.FarNetVersion)`nPowerShellFar $($Host.Version)`nPowerShell Core $($PSVersionTable.PSVersion)"
У меня

Code: Select all

Far 3.0.6248.0
FarNet 8.1.5.0
PowerShellFar 8.1.2.0
PowerShell Core 7.4.1
Про новую проблему подумаю, но сначала обновите PowerShellFar и попробуйте опять.
User avatar
NightRoman
Posts: 6225
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 42 times
Been thanked: 62 times
Contact:

PowerShellFar — PowerShell host и автоматизация Far Manager

Post by NightRoman »

Такой скрипт у меня работает

Code: Select all

Add-Type -AssemblyName System.Drawing
$bmp = New-Object System.Drawing.Bitmap 1, 1
$bmp.Save("$PSScriptRoot\test.tif")
mlt
Posts: 6
Joined: Mon 08 Jan, 2024 20:05
Has thanked: 2 times

PowerShellFar — PowerShell host и автоматизация Far Manager

Post by mlt »

Bingo! Благодарю… отладили вместо меня🤦 Почему-то не работает $bmp.Save(".\test.tif") если вызывать через ps:. Работает если сделать "$(Resolve-Path '.')\test.tif". Все работает. Почему "." вызывает проблемы всё равно загадка.
User avatar
NightRoman
Posts: 6225
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 42 times
Been thanked: 62 times
Contact:

PowerShellFar — PowerShell host и автоматизация Far Manager

Post by NightRoman »

Хорошо, что разобрались.

Сохранение с относительным путем работает, но сохраняет не туда, куда вы думаете, а в текущую папку процесса (Фара). А эта папка - это не папка активной панели, а все, что угодно, зависит от менял ли кто или нет. Скорей всего, этот test.tif у вас сохранен в папку, где установлен Фар, посмотрите там.

Почему так работает? Вы вызываете .нет метод, он так устроен, он не знает ничего про папки Фара или текущую локацию Повершел.
Словом, когда вызываете .нет методы, используйте полные пути.
User avatar
buniak_a_h
Posts: 4565
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 242 times
Been thanked: 674 times
Contact:

PowerShellFar — PowerShell host и автоматизация Far Manager

Post by buniak_a_h »

NightRoman wrote: Wed 17 Jan, 2024 06:00 А эта папка <…> все, что угодно…
На самом деле она даже может зависеть от того, установлены ли ANSI-плагины. Мне тут рассказывали, что если есть такие, то текущая папка поддерживается авной папке активной панели. Это был бы хороший вариант независимо от того, есть ли ANSI-плагины. Но почему-то сделано пол-шага… :sad:
mlt
Posts: 6
Joined: Mon 08 Jan, 2024 20:05
Has thanked: 2 times

PowerShellFar — PowerShell host и автоматизация Far Manager

Post by mlt »

Хочется верить что это так ибо для записи в папку фара нужны повышенные привелегии и попытка записать файл завершается ошибкой. Но как же тогда ps: Resolve-Path '.' работает? Он прекрасно показывает текущую папку.
User avatar
NightRoman
Posts: 6225
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 42 times
Been thanked: 62 times
Contact:

PowerShellFar — PowerShell host и автоматизация Far Manager

Post by NightRoman »

Потому что PowerShellFar перед вызовом команд временно синхронизирует ПШ локацию на папку текущей панели. Это не имеет никакого отношения к папке процесса. Но ПШ использует свои current location.
mlt
Posts: 6
Joined: Mon 08 Jan, 2024 20:05
Has thanked: 2 times

PowerShellFar — PowerShell host и автоматизация Far Manager

Post by mlt »

Я имел в виду что Resolve-Path '.' работает не только для командной строки, но и в теле скрипта. Изнутри скрипта Get-Location возвращает тоже самое что и Resolve-Path '.'. Только вот без оборачивания параметра в самом скрипте в $Path = Resolve-Path $Path. Ничего не работает… включая чтение из файла. При том что Write-Host (Get-Location) правильные вещи пишет.
User avatar
NightRoman
Posts: 6225
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 42 times
Been thanked: 62 times
Contact:

PowerShellFar — PowerShell host и автоматизация Far Manager

Post by NightRoman »

Но скрипт-то как вызывается? Из комстроки или ее аналога (юзер меню или файл ассоциация). PSF все равно синхронизирует current location в начале этой операции.
mlt
Posts: 6
Joined: Mon 08 Jan, 2024 20:05
Has thanked: 2 times

PowerShellFar — PowerShell host и автоматизация Far Manager

Post by mlt »

NightRoman wrote: Wed 17 Jan, 2024 06:00 Вы вызываете .нет метод, он так устроен, он не знает ничего про папки Фара или текущую локацию Повершел.
Словом, когда вызываете .нет методы, используйте полные пути.
Перечитал ваш комментарий🤦 и все вопросы отпали. Благодарю за плагин и объяснения.
ax_coder
Posts: 3
Joined: Fri 27 Sep, 2024 11:32

PowerShellFar — PowerShell host и автоматизация Far Manager

Post by ax_coder »

Хочется совместить Far, современный PowerShell + oh-my-posh + PSReadLine + WindowsTerminal.

Собственно, я подумал, из всего этого хотелось бы чтобы Far брал на себя навигацию, а весь комманд лайн был в PS+WT.

Можно ли как-то это совместить? Например, шаримся по файловой системе в FAR потом по хоткею переходим на другую вкладку WT, а там PowerShell автоматически перешел в ту же папку, где текущая директория в ФАре?
User avatar
NightRoman
Posts: 6225
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 42 times
Been thanked: 62 times
Contact:

PowerShellFar — PowerShell host и автоматизация Far Manager

Post by NightRoman »

PowerShellFar в Фаре (самый современный PowerShell) имеет свой комманд лайн, не такой, как PSReadLine в консоли, но ничуть не хуже, чем-то даже лучше. Надо почитать доки, настройки, и настроить под себя. Чуть привыкнуть к другой среде.

Есть способы запустить ПШ консоль из Фара с текущей папкой активной панели. Есть способы запустить Фар из ПШ с панелями текущей локации.
Не использую WindowsTerminal, может, что-то и возможно из описанного, мне не нужно, разбираться не планирую.
Нужны конкретные вопросы, что именно нужно от PowerShellFar для этого, оно может уже быть.

PSReadLine пробовал прикрутить (oh-my-posh нет), не очень гладко получается, в том числе и из-за некоторых проблем в самом PSReadLine, этот продукт никто не готовил для Фара, и просить там что-то делать не планирую. Главная причина, у PSReadLine модальный луп, и это отключает все прелести Фара, что-то делать еще, не выходя из комстроки в процессе ее редактирования.
ax_coder
Posts: 3
Joined: Fri 27 Sep, 2024 11:32

PowerShellFar — PowerShell host и автоматизация Far Manager

Post by ax_coder »

Запустил FolderChart и вышел из него - CPU почти не используется
image.png
ax_coder
Posts: 3
Joined: Fri 27 Sep, 2024 11:32

PowerShellFar — PowerShell host и автоматизация Far Manager

Post by ax_coder »

Сорри протупил, ответил на какое-то старое сообщение
Post Reply

Return to “Обсуждение плагинов”