Por que não consigo definir o local (cd) para o objeto retornado por Get-ChildItem? (também conhecido como ls)

1
ls "d:\" "yasuo500" -recurse -directory 

Este comando encontra a pasta 'yasuo500' em d: \ media \ documents, eu quero usar 'cd' para entrar nesse diretório, mas como? eu tentei isso:

$path1 = ls "d:\" "yasuo500" -recurse -directory
cd $path1

Mas isso não funciona, diz cd : cannot find path 'c:\yasuo500' because it does not exist.

O que estou fazendo de errado?

* Lembre-se de que posso fazer

cd "d:\media\documents\yasuo500"

Mas ... não é eficiente, e se o diretório for LONG, eu levaria muita digitação.

    
por ScuddleWuddles 04.03.2017 / 04:42

1 resposta

3

Você precisa de: cd $path1.FullName

PowerShell opera em objetos e é importante entender como eles funcionam juntos.

cd é um alias para Set-Location .
get-help Set-Location indica que espera uma string para o caminho:

Set-Location [[-Path] < string >] [-PassThru] [-UseTransaction] []

Isso significa que, quando você passar um objeto para ele, o objeto será convertido em uma string.

$path1 é DirectoryInfo e, se você chamar $path1.ToString() , obterá apenas a parte yasuo500 do caminho. É o equivalente a cd yasuo500 e o erro indica que você tentou fazer isso a partir da raiz do seu C: \.

Usar a propriedade FullName do seu DirectoryInfo fornece uma string de caminho completa.

    
por 04.03.2017 / 07:14

Tags