Есть ли способ в Powershell предоставить виртуальные файловые системы в других файловых системах?

Я знаю, что вы можете написать поддержку пользовательских PSDrives. Но это всегда корень файловой системы. Что было бы хорошо, если бы был способ разрешить запуск VFS на произвольных узлах файловой системы, например, с помощью Set-Location войти в файл архива и использовать их, как если бы они были папками. (Вроде как Фар делает это).

Есть ли способ добиться этого? Я знаю, было бы немного поработать, чтобы все было правильно и работало, но сейчас меня больше интересует, возможно ли это вообще.

ETA: Чего я не хочу, так это нового PSDrive для каждого архива, в который я вхожу, так что на самом деле мне не нужно следующее:

PS C:\Path> Invoke-Magic stuff.zip
PS C:\Path> Set-Location MyNewDrive:
PS MyNewDrive:> _

скорее

PS C:\Path> Set-Location stuff.zip
PS C:\Path\stuff.zip> _

3 ответа

Решение

То, что вы описываете, - это поставщик FileSystem, который также считает архивы объектами-контейнерами. Поскольку FileSystemProvider запечатан, я думаю, что вам придется написать свой собственный NavigationCmdletProvider, который сделает вашу магию.

Вам нужно написать провайдера, вот пример провайдера для SourceSafe (старый, но все еще актуальный)

Конечно. Фактически, вы уже можете сделать это до некоторой степени без написания кода оснастки. Например:

New-PsDrive -Scope Global -Name MyMod -PSProvider FileSystem -Root (split-path $profile | join-path -child Modules)
dir MyMod:\
Другие вопросы по тегам