Ответ 1
Здесь другой вариант с использованием конвейера:
$arr = Get-ChildItem \\QNAP\wpbackup |
Where-Object {$_.PSIsContainer} |
Foreach-Object {$_.Name}
Я пытаюсь написать сценарий, который будет получать имена всех папок в определенном каталоге, а затем возвращать каждую в виде записи в массиве. Отсюда я собирался использовать каждый элемент массива для запуска большего цикла, который использует каждый элемент в качестве параметра для последующего вызова функции. Все это через PowerShell.
На данный момент у меня есть этот код:
function Get-Directorys
{
$path = gci \\QNAP\wpbackup\
foreach ($item.name in $path)
{
$a = $item.name
}
}
Строка $path
верна и возвращает мне все каталоги, однако цикл foreach является проблемой, когда он на самом деле сохраняет отдельные символы первого каталога вместо полного имени каждого каталога для каждого элемента.
Здесь другой вариант с использованием конвейера:
$arr = Get-ChildItem \\QNAP\wpbackup |
Where-Object {$_.PSIsContainer} |
Foreach-Object {$_.Name}
Для полноты и удобочитаемости:
Получите все файлы в "некоторой папке", начиная с "F" до массива.
$FileNames = Get-ChildItem -Path '.\somefolder\' -Name 'F*' -File
Это получает все каталоги текущего каталога:
$FileNames = Get-ChildItem -Path '.\' -Directory
$array = (dir *.txt).FullName
$array теперь представляет собой список путей для всех текстовых файлов в каталоге.
# initialize the items variable with the
# contents of a directory
$items = Get-ChildItem -Path "c:\temp"
# enumerate the items array
foreach ($item in $items)
{
# if the item is a directory, then process it.
if ($item.Attributes -eq "Directory")
{
Write-Host $item.Name//displaying
$array=$item.Name//storing in array
}
}
Я считаю, что проблема в том, что ваша переменная цикла foreach
$item.name
. То, что вы хотите, это переменная цикла с именем $item
, и вы получите доступ к свойству name
для каждого из них.
т.е.
foreach ($item in $path)
{
$item.name
}
Также обратите внимание, что я оставил $item.name
не назначенным. В Powershell, если результат не сохраняется в переменной, перенаправляется в другую команду или иным образом фиксируется, он включается в возвращаемое значение функции.