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
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.
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.