Pergunta

Estou escrevendo um cmdlet PowerShell. De dentro do meu método cmdlet BeginProcessing (), quero poder recuperar o diretório que era o diretório padrão no momento em que o cmdlet foi invocado.

Exemplo: se o usuário fizer isso:

cd \myDirectory
invoke-mycmdlet

Quero que meu código saiba que o diretório do shell padrão era C: MyDirectory. Quando eu acessar o ambiente.CurrentDirectory, é sempre C: Windows System32

Eu já vi uma postagem semelhante sobre onde o pôster precisava definir o ambiente :: Diretório atual de dentro do shell usando o get-Location. Isso não vai funcionar para mim.

Basicamente, meu cmdlet faz algumas coisas do sistema de arquivos, e eu quero que o usuário possa apenas CD em um diretório e executar meu cmdlet, com ele operando no diretório em que eles mudaram - assim como você esperaria que ele trabalho do antigo console de comando.

Foi útil?

Solução

Você pode querer tentar isso, o CurrentLocation.Path também pode apontar para outros caminhos de provedores, como o registro.

this.SessionState.Path.CurrentFileSystemLocation.Path

Outras dicas

Sabe, eu sempre pareço encontrá -lo logo após postar - independentemente de quanto tempo gastei antes de alcançar isso!

Então, meu cmdlet herda do PSCMDLET. Eu descobri que poderia conseguir o caminho que queria

this.SessionState.Path.CurrentLocation.Path

(onde "This" é uma classe cmdlet que herda do PSCMDLET)

Tente o Get-Location cmdlet. Deve ser o local de execução atual do script, em vez da pasta de inicialização do host PowerShell.

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