在PowerShell中将位置设置为变量

时间:2012-06-05 20:01:08

标签: powershell powershell-v2.0 powershell-v1.0

我是PowerShell的新手,我确信这是一个简单的问题,但我有点难过。我正在尝试打开一个文件夹,按LastWriteTime排序,然后打开列表顶部的文件夹。我想将它存储在变量中,所以当我调用变量时,我可以将我的位置设置为该变量。我遇到的问题是,当我调用我的变量时,没有任何反应:

  

$ latest = Get-Childitem C:\ Main |排序LastWriteTime -Descending |   选择-First 1 |调用-项目

当我尝试'Set-Location $latest'时,我怎么会收到错误?

5 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:2)

这对我有用:

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

答案 2 :(得分:1)

尝试一下:

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

答案 3 :(得分:1)

如果您想使用变量作为Set-Location的值,那么您应该像这样使用它:

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

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

答案 4 :(得分:0)

您已经根据所获得的内容调用了项目,并执行了默认操作。变量将只返回该操作的状态,而不是返回的项。如果你删除最后一个管道调用项,你可能会得到你想要的。

set-location需要一个字符串,而powershell返回一个对象。所以这样的事情可能就是你想要的。

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