Latest post of the previous page:
mlt, у меня ваши две команды, добавить тип и создать бмп, работают. Надо больше подробностей. Какие версии FarNet и PowerShellFar? Что еще в скрипте делается до создания бмп? Если поискать System.Drawing.dll в %FARHOME% во всех папках, то где именно находится, сколько их находится?PowerShellFar — PowerShell host и автоматизация Far Manager
- 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
Far 3.0.6116.0 x64. FarNet 7.0.9.
Действительно, по какой-то причине те 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.
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.
- 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
Хорошо, что обновили FarNet до 8.1.5, но и PowerShellFar надо обновить, 8.1.2.0.
У вас старая версия, судя по PSVersion 7.3.4 (должно быть 7.4.1)
Вообще, полезные версии можно получить так:
У меня
Про новую проблему подумаю, но сначала обновите PowerShellFar и попробуйте опять.
У вас старая версия, судя по 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
- 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
Такой скрипт у меня работает
Code: Select all
Add-Type -AssemblyName System.Drawing
$bmp = New-Object System.Drawing.Bitmap 1, 1
$bmp.Save("$PSScriptRoot\test.tif")
PowerShellFar — PowerShell host и автоматизация Far Manager
Bingo! Благодарю… отладили вместо меня
Почему-то не работает
$bmp.Save(".\test.tif") если вызывать через ps:. Работает если сделать "$(Resolve-Path '.')\test.tif". Все работает. Почему "." вызывает проблемы всё равно загадка.- 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
Хорошо, что разобрались.
Сохранение с относительным путем работает, но сохраняет не туда, куда вы думаете, а в текущую папку процесса (Фара). А эта папка - это не папка активной панели, а все, что угодно, зависит от менял ли кто или нет. Скорей всего, этот test.tif у вас сохранен в папку, где установлен Фар, посмотрите там.
Почему так работает? Вы вызываете .нет метод, он так устроен, он не знает ничего про папки Фара или текущую локацию Повершел.
Словом, когда вызываете .нет методы, используйте полные пути.
Сохранение с относительным путем работает, но сохраняет не туда, куда вы думаете, а в текущую папку процесса (Фара). А эта папка - это не папка активной панели, а все, что угодно, зависит от менял ли кто или нет. Скорей всего, этот test.tif у вас сохранен в папку, где установлен Фар, посмотрите там.
Почему так работает? Вы вызываете .нет метод, он так устроен, он не знает ничего про папки Фара или текущую локацию Повершел.
Словом, когда вызываете .нет методы, используйте полные пути.
- 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
На самом деле она даже может зависеть от того, установлены ли ANSI-плагины. Мне тут рассказывали, что если есть такие, то текущая папка поддерживается авной папке активной панели. Это был бы хороший вариант независимо от того, есть ли ANSI-плагины. Но почему-то сделано пол-шага…
PowerShellFar — PowerShell host и автоматизация Far Manager
Хочется верить что это так ибо для записи в папку фара нужны повышенные привелегии и попытка записать файл завершается ошибкой. Но как же тогда
ps: Resolve-Path '.' работает? Он прекрасно показывает текущую папку.- 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
Потому что PowerShellFar перед вызовом команд временно синхронизирует ПШ локацию на папку текущей панели. Это не имеет никакого отношения к папке процесса. Но ПШ использует свои current location.
PowerShellFar — PowerShell host и автоматизация Far Manager
Я имел в виду что
Resolve-Path '.' работает не только для командной строки, но и в теле скрипта. Изнутри скрипта Get-Location возвращает тоже самое что и Resolve-Path '.'. Только вот без оборачивания параметра в самом скрипте в $Path = Resolve-Path $Path. Ничего не работает… включая чтение из файла. При том что Write-Host (Get-Location) правильные вещи пишет.- 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
Но скрипт-то как вызывается? Из комстроки или ее аналога (юзер меню или файл ассоциация). PSF все равно синхронизирует current location в начале этой операции.
PowerShellFar — PowerShell host и автоматизация Far Manager
Перечитал ваш комментарийNightRoman wrote: Wed 17 Jan, 2024 06:00 Вы вызываете .нет метод, он так устроен, он не знает ничего про папки Фара или текущую локацию Повершел.
Словом, когда вызываете .нет методы, используйте полные пути.
PowerShellFar — PowerShell host и автоматизация Far Manager
Хочется совместить Far, современный PowerShell + oh-my-posh + PSReadLine + WindowsTerminal.
Собственно, я подумал, из всего этого хотелось бы чтобы Far брал на себя навигацию, а весь комманд лайн был в PS+WT.
Можно ли как-то это совместить? Например, шаримся по файловой системе в FAR потом по хоткею переходим на другую вкладку WT, а там PowerShell автоматически перешел в ту же папку, где текущая директория в ФАре?
Собственно, я подумал, из всего этого хотелось бы чтобы Far брал на себя навигацию, а весь комманд лайн был в PS+WT.
Можно ли как-то это совместить? Например, шаримся по файловой системе в FAR потом по хоткею переходим на другую вкладку WT, а там PowerShell автоматически перешел в ту же папку, где текущая директория в ФАре?
- 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
PowerShellFar в Фаре (самый современный PowerShell) имеет свой комманд лайн, не такой, как PSReadLine в консоли, но ничуть не хуже, чем-то даже лучше. Надо почитать доки, настройки, и настроить под себя. Чуть привыкнуть к другой среде.
Есть способы запустить ПШ консоль из Фара с текущей папкой активной панели. Есть способы запустить Фар из ПШ с панелями текущей локации.
Не использую WindowsTerminal, может, что-то и возможно из описанного, мне не нужно, разбираться не планирую.
Нужны конкретные вопросы, что именно нужно от PowerShellFar для этого, оно может уже быть.
PSReadLine пробовал прикрутить (oh-my-posh нет), не очень гладко получается, в том числе и из-за некоторых проблем в самом PSReadLine, этот продукт никто не готовил для Фара, и просить там что-то делать не планирую. Главная причина, у PSReadLine модальный луп, и это отключает все прелести Фара, что-то делать еще, не выходя из комстроки в процессе ее редактирования.
Есть способы запустить ПШ консоль из Фара с текущей папкой активной панели. Есть способы запустить Фар из ПШ с панелями текущей локации.
Не использую WindowsTerminal, может, что-то и возможно из описанного, мне не нужно, разбираться не планирую.
Нужны конкретные вопросы, что именно нужно от PowerShellFar для этого, оно может уже быть.
PSReadLine пробовал прикрутить (oh-my-posh нет), не очень гладко получается, в том числе и из-за некоторых проблем в самом PSReadLine, этот продукт никто не готовил для Фара, и просить там что-то делать не планирую. Главная причина, у PSReadLine модальный луп, и это отключает все прелести Фара, что-то делать еще, не выходя из комстроки в процессе ее редактирования.
PowerShellFar — PowerShell host и автоматизация Far Manager
Запустил FolderChart и вышел из него - CPU почти не используется
PowerShellFar — PowerShell host и автоматизация Far Manager
Сорри протупил, ответил на какое-то старое сообщение