在PowerShell中将位置设置为变量

5

我对PowerShell非常陌生,我知道这是个简单问题,但我还是有些困惑。我试图打开一个文件夹,按LastWriteTime排序,并打开列表顶部的文件夹。我想将其存储在一个变量中,以便在调用变量时可以将位置设置为该变量。我遇到的问题是,当我调用变量时,什么也没有发生:

$latest = Get-Childitem C:\Main | Sort LastWriteTime -Descending | Select -First 1 | Invoke-Item

为什么我尝试'Set-Location $latest'时会出现错误?

5个回答

3
这对我有用:

这对我有用:

$last = gci ./ | sort LastWriteTime | select -last 1
Set-Location ($last.FullName)

2
如果您想将变量用作Set-Location的值,则应像这样使用它:
$variableName = whatever
Set-Location (Split-Path variableName)

请注意,我没有使用美元符号$

2

我会使用 Tee-Object 将变量 $latest 设置为目录,并继续将目录对象发送到管道中。

Get-Childitem C:\Main | 
    Sort LastWriteTime -Descending | 
    Select-Object -First 1 | 
    Tee-Object -Variable latest |
    Invoke-Item

1

试一试这个:

$first = Get-Childitem C:\Main | Sort-Object LastWriteTime -Descending | Select-Object -First 1
Set-Location (Split-Path $first.FullName)

0

你已经在所得到的对象上调用了invoke-item,并且默认操作已执行。该变量只会返回该操作的状态,而不是返回的项。如果删除最后一个管道invoke-item,则可能会得到你想要的结果。

set-location需要一个字符串,而powershell返回一个对象。因此,像这样的东西可能是你想要的。

set-location "c:\Main\" + $lastest.name


我尝试过了,但仍然收到了相同的“找不到路径”错误。 - MaineMan
抱歉,应该是 set-location "c:\Main" + $lastest.name,我已经编辑了我的答案。 - johnshen64

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接