Есть ли в Powershell способ предоставлять виртуальные файловые системы в других файловых системах?
-
19-09-2019 - |
Вопрос
Я знаю, что вы можете написать поддержку для пользовательских PSD-накопителей.Но это всегда корень файловой системы.Что было бы неплохо, если бы существовал способ разрешить запуск VFS на произвольных узлах файловой системы, например, с помощью Set-Location
возможно, ввести архивный файл и использовать их, как если бы они были папками.(Вроде как Far делает это).
Есть ли какой-нибудь способ достичь этого?Я знаю, потребовалась бы определенная работа, чтобы сделать это правильным и работающим, но на данный момент меня больше интересует, возможно ли это вообще.
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> _
Решение
То, что вы описываете, - это поставщик файловой системы, который также рассматривает архивы как объекты-контейнеры.Как Поставщик файловой системы запечатан, я думаю, вам пришлось бы написать свой собственный NavigationCmdletProvider - Навигационный модуль это творит твою магию.
Другие советы
Конечно.Фактически, вы уже можете сделать это в какой-то степени без написания какого-либо кода оснастки.Например:
New-PsDrive -Scope Global -Name MyMod -PSProvider FileSystem -Root (split-path $profile | join-path -child Modules)
dir MyMod:\
Вам нужно написать поставщик услуг, вот один из примеров для поставщика для SourceSafe (старый, но все еще актуальный)