Existe uma maneira em Powershell para fornecer sistemas de arquivos virtuais em outros sistemas de arquivos?

StackOverflow https://stackoverflow.com/questions/1165463

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> _
Foi útil?

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)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top