Требуется PowerShell v3 или выше, вы можете проверить, используя $PSVersionTable
. *
$path = (Get-ChildItem . -Recurse -Directory | Where-Object { $_.Name -eq "Folder" }).FullName
Это даст вам все каталоги с именем Folder
в текущем каталогеи его подкаталоги рекурсивно.
Однако запрос может возвращать несколько результатов, поэтому, если вы хотите выбрать первое, используйте [0]
.Кроме того, чтобы охватить случай, когда запрос не возвращает результатов, принудительно установите возвращаемый объект как массив, используя @( ... )
и проверьте, существует ли он:
$f = @(Get-ChildItem . -Recurse -Directory | Where-Object { $_.Name -eq "Folder" })[0].FullName
if ( $f ) {
cd $f
}
else {
# Handle the error
}
cd
является псевдонимом Set-Location
, так что выможете использовать то, что вы предпочитаете.Важно помнить, что следует использовать свойство FullName
, поскольку оно содержит полный путь к папке.
* Для версий PowerShell ниже v3 используйте | Where-Object {$_.PSIsContainer -eq $true}
вместо -Directory