Установите местоположение для переменной в PowerShell

Я новичок в PowerShell и уверен, что это простой вопрос, но я немного озадачен. Я пытаюсь открыть папку, отсортировать по LastWriteTime и открыть папку вверху списка. Я хочу сохранить это в переменной, поэтому, когда я вызываю переменную, я могу установить свое местоположение для этой переменной. У меня проблема в том, что когда я вызываю свою переменную, ничего не происходит:

$ latest = Get-Childitem C: \ Main | Сортировать LastWriteTime - По убыванию | Select -First 1 | Invoke-Item

Почему я получаю сообщение об ошибке при попытке "Set-Location $latest"?


person MaineMan    schedule 05.06.2012    source источник


Ответы (5)


Это сработало для меня:

$last = gci ./ | sort LastWriteTime | select -last 1
Set-Location ($last.FullName)
person Petro Franko    schedule 11.09.2013

Я бы использовал Tee-Object, чтобы установить переменную $latest в каталог, а также продолжить отправку объекта каталога по конвейеру.

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

Если вы хотите использовать переменную в качестве значения для Set-Location, вы должны использовать ее следующим образом:

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

Обратите внимание, что я не использую знак $.

person rovinos    schedule 23.12.2014

Попробуйте:

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

Вы уже вызываете-item для того, что получили, и действие по умолчанию было выполнено. переменная просто вернет статус этого действия, а не возвращенного элемента. Если вы удалите последний элемент вызова канала, вы можете получить то, что хотите.

set-location требует строки, а powershell возвращает объект. так что что-то вроде этого может быть тем, что вы хотите.

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

person johnshen64    schedule 05.06.2012
comment
Я пробовал это, но все равно получал ту же ошибку "Не могу найти путь" - person MaineMan; 06.06.2012
comment
извините, должно быть установлено местоположение c: \ Main \ + $ lastest.name, и я отредактировал свой ответ. - person johnshen64; 06.06.2012