PowerShell работает в основном с конвейером, поэтому большая часть того, что вы напишете, будет состоять из создания объектов, представляющих некоторую информацию, а также фильтрации и манипулирования ими.В этом случае объекты представляют собой набор папок.
Получить все элементы в папке.Это позволит получить файлы и , поэтому шаг 2 необходим.Символ |
в конце строки указывает, что конвейер будет продолжен на следующей строке - объекты, созданные с помощью Get-ChildItem
, будут затем передаваться одна за другой команде.
Get-ChildItem c:\temp |
Фильтр для папок.К сожалению, нет действительно элегантного способа.Не беспокойтесь о том, что в нем написано «контейнер», а не «папка» - эти команды работают со многими разными вещами, не только с файлами и папками, поэтому в именовании использовалась более общая концепция.
Where { $_.PSIsContainer } |
Сортировка по дате, по убыванию, поэтому самая новая папка является первой.
Sort CreationTime -Descending |
Выберите первую (самую новую) папку.
Select -First 1
Короче говоря:
gci c:\temp | ? { $_.PSIsContainer } | sort CreationTime -desc | select -f 1
или
(gci c:\temp | ? { $_.PSIsContainer } | sort CreationTime)[-1]
Обе эти строки интенсивно используют псевдонимы по умолчанию для команд в PowerShell, такие как ?
для Where-Object
.Вы должны использовать полные имена в скриптах, так как вы никогда не узнаете, как будут выглядеть псевдонимы на других машинах, на которых может выполняться код.
РЕДАКТИРОВАТЬ: PowerShell3 имеет дополнительные параметры для Get-ChildItem
, которые позволяют выполнять фильтрацию файлов или папок напрямую, поэтому вам не нужно Where
:
Get-ChildItem -Directory C:\temp | ...
Как правило, вы будете работать с объектами иих свойства в PowerShell.Две очень полезные команды: Get-Member
и его псевдоним gm
и Get-Command
или просто gcm
.Get-Member
скажет вам, какими свойствами и методами обладает объект;для этого вы просто добавляете что-то еще:
Get-ChildItem | gm
скажет вам, какие файлы свойств и каталоги имеют.
Get-Command
перечислит все команды, которые есть или те, которые соответствуют определенномушаблон.Команды PowerShell стараются быть очень последовательными в использовании глаголов и существительных.Чтобы найти все команды, оканчивающиеся на Object
, вы можете попробовать gcm *-Object
- это общие команды, работающие практически со всем.Get-Help ForEach-Object
затем расскажет вам о конкретной команде, ForEach-Object
в данном случае.