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

为什么我不能将 Set-Location (cd) 设置为 Get-ChildItem 返回的对象?(又名 ls、dir)
ls "d:\" "yasuo500" -recurse -directory 

此命令在 d:\media\documents 中找到文件夹“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"

但是...它效率不高,如果目录很长,我就要输入太多的内容。

答案1

你需要:cd $path1.FullName

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

cd是 的别名Set-Location
get-help Set-Location表示它期望路径的字符串:

设置位置[[-路径] <字符串>][-PassThru] [-UseTransaction] []

这意味着当您传递一个对象时,它会将该对象转换为字符串。

$path1DirectoryInfo,如果您调用 ,$path1.ToString()您将只获得路径的 yasuo500 部分。它相当于cd yasuo500,错误表明您尝试从 C:\ 的根目录执行此操作。

使用FullNameDirectoryInfo 的属性可以提供完整的路径字符串。

相关内容