为什么我不能Set-Location(cd)到Get-ChildItem返回的对象? (又名ls,dir)

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

这个命令在d:\ media \ documents中find文件夹'yasuo500',我想用'cd'进入那个目录,但是怎么做? 我试过这个:

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

但它不工作,它说cd : cannot find path 'c:\yasuo500' because it does not exist.

我究竟做错了什么?

请记住,我可以做

 cd "d:\media\documents\yasuo500" 

但是…这不是很有效率,如果目录很长,我会input太多的内容。

您需要: cd $path1.FullName

PowerShell对对象进行操作,了解这些对象如何协同工作非常重要。

cdSet-Location的别名。
get-help Set-Location表示它期望一个string的path:

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

这意味着当你传递一个对象的时候,它会把对象转换成一个string。

$path1是一个DirectoryInfo ,如果你调用$path1.ToString()你将只获得path的yasuo500部分。 这是cd yasuo500的等价物,错误表明你试图从你的C:\的根目录下做这件事。

使用DirectoryInfo的FullName属性给出一个完整的pathstring。