Existe uma maneira em Powershell para fornecer sistemas de arquivos virtuais em outros sistemas de arquivos?
-
19-09-2019 - |
Pergunta
Eu sei que você pode escrever o suporte para PSDrives personalizados. Mas esses são sempre uma raiz de um sistema de arquivos. O que seria bom se houvesse uma maneira de permitir VFS começam em nós arbitrários do sistema de arquivos, como o uso Set-Location
para entrar arquivo talvez e usá-los como se fossem pastas. (Kinda como Far faz isso).
Existe alguma maneira de conseguir isso? Eu sei, seria algum trabalho para obtê-lo direito e trabalhar, mas no momento eu estou mais interessado se seria possível em tudo.
ETA: O que eu não quero é um novo PSDrive para cada arquivar eu entrar, então o seguinte não é realmente o que eu estou depois:
PS C:\Path> Invoke-Magic stuff.zip
PS C:\Path> Set-Location MyNewDrive:
PS MyNewDrive:> _
mas sim
PS C:\Path> Set-Location stuff.zip
PS C:\Path\stuff.zip> _
Solução
O que você está descrevendo é um provedor FileSystem, que também considera arquivos a ser objetos de recipiente. Como FileSystemProvider é selado, eu acho que você teria que escrever o seu próprio NavigationCmdletProvider que faz a sua magia.
Outras dicas
Claro. Na verdade, você já pode fazer isso até certo ponto sem escrever qualquer snap-in de código. Por exemplo:
New-PsDrive -Scope Global -Name MyMod -PSProvider FileSystem -Root (split-path $profile | join-path -child Modules)
dir MyMod:\
Você precisa escrever uma provedor , aqui está um exemplo para um provedor para SourceSafe (antigo mas ainda relevante)