将位置设置为PowerShell中的变量

将位置设置为PowerShell中的变量,powershell,powershell-2.0,powershell-1.0,Powershell,Powershell 2.0,Powershell 1.0,我对PowerShell非常陌生,我相信这是一个简单的问题,但我有点困惑。我正在尝试打开一个文件夹,按LastWriteTime排序,然后打开列表顶部的文件夹。我想将其存储在一个变量中,这样当我调用该变量时,我可以将我的位置设置为该变量。我遇到的问题是,当我调用变量时,什么都不会发生: $latest=获取子项C:\Main |排序LastWriteTime-降序| 选择-第一个1 |调用项 当我尝试“设置位置$latest”时,为什么会出现错误?您已经调用了所获得的项,并且执行了默认操作。变量

我对PowerShell非常陌生,我相信这是一个简单的问题,但我有点困惑。我正在尝试打开一个文件夹,按LastWriteTime排序,然后打开列表顶部的文件夹。我想将其存储在一个变量中,这样当我调用该变量时,我可以将我的位置设置为该变量。我遇到的问题是,当我调用变量时,什么都不会发生:

$latest=获取子项C:\Main |排序LastWriteTime-降序| 选择-第一个1 |调用项


当我尝试“
设置位置$latest
”时,为什么会出现错误?

您已经调用了所获得的项,并且执行了默认操作。变量将只返回该操作的状态,而不是返回的项。如果删除最后一个管道调用项,则可能会得到所需的结果

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


设置位置“c:\Main\”+$lastest.name

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

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

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

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

如果要使用变量作为“设置位置”的值,则应如下使用:

$variableName = whatever
Set-Location (Split-Path variableName)

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

我尝试过,但仍然收到相同的“找不到路径”错误抱歉,应该设置为位置“c:\Main\”+$lastest.name,我已经编辑了我的答案。