我对 PowerShell 很陌生,我确信这是一个简单的问题,但我有点难过。我正在尝试打开一个文件夹,按 LastWriteTime 排序,然后打开列表顶部的文件夹。我想将它存储在一个变量中,所以当我调用该变量时,我可以将我的位置设置为该变量。我遇到的问题是,当我调用我的变量时,什么也没有发生:
$latest = 获取子项 C:\Main | 排序 LastWriteTime -降序 | 选择 - 前 1 | 调用项
当我尝试' Set-Location $latest'时为什么会出错?
我对 PowerShell 很陌生,我确信这是一个简单的问题,但我有点难过。我正在尝试打开一个文件夹,按 LastWriteTime 排序,然后打开列表顶部的文件夹。我想将它存储在一个变量中,所以当我调用该变量时,我可以将我的位置设置为该变量。我遇到的问题是,当我调用我的变量时,什么也没有发生:
$latest = 获取子项 C:\Main | 排序 LastWriteTime -降序 | 选择 - 前 1 | 调用项
当我尝试' Set-Location $latest'时为什么会出错?
这对我有用:
$last = gci ./ | sort LastWriteTime | select -last 1
Set-Location ($last.FullName)
如果你想使用一个变量作为 Set-Location 的值,那么你应该像这样使用它:
$variableName = whatever
Set-Location (Split-Path variableName)
请注意,我没有使用该$标志。
我将使用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)
您已经调用了您所获得的项目,并且执行了默认操作。该变量将只返回该操作的状态,而不是返回的项目。如果你删除最后一个管道调用项,你可能会得到你想要的。
set-location 需要一个字符串,powershell 返回一个对象。所以像这样的东西可能是你想要的。
设置位置 "c:\Main\" + $lastest.name