Назад | Перейти на главную страницу

PowerShell Get-ChildItem - слишком длинный путь

Я застрял в попытке отформатировать свою таблицу вывода для команды Get-ChildItem.

Я создал сценарий для сканирования каталога, определенного в $ Source, для поиска файлов, определенных $ Months и $ Size. Это работает нормально, но некоторые каталоги длиннее 248 символов, и я получаю ошибку слишком длинный путь к файлу.

Поэтому я хочу не включать путь $ Source, когда он выводится в столбец каталога в таблице.

Например, я хочу это увидеть:

| file1.csv | Последний доступ для записи | . \ Рабочий стол \ Папка1 |
| file2.txt | Последний доступ для записи | . \ Рабочий стол \ Folder2 |

когда $ Source определен как C: \ users \ User1

Вот мой текущий код:

$Source = "C:\Users\User1"
$Months = "24"
$Size = 10MB
$OutSource = "C:\Export"
$LogName = "Export"
$Ext = "csv"

$Date = (Get-Date).AddMonths(-$Months)

Get-ChildItem -Path "$Source\*.*" -Recurse -Force | `
    Where-Object {$_.LastAccessTime -lt $Date -and $_.Length -gt $Size} | `
        Format-Table -AutoSize -Property Name, LastWriteTime, LastAccessTime, Directory | `
            Out-String -Width 4096 | `
                Out-File $OutSource\$LogName.$Ext

Заранее спасибо.

После обширных поисков, проб и ошибок я нашел решение своей проблемы.

Поскольку нет возможности усечь первую часть пути, я вместо этого добавил строку кода для создания временного сетевого диска для усечения.

Используемый код:

    New-PSDrive "X" -PSProvider FileSysytem -Root "$Source"

И изменил

    Get-ChildItem -Path "$Source\*.*" -Recurse -Force | `

Чтобы

    Get-ChildItem -Path "X:\*.*" -Recurse -Force | `

Так что мой текущий результат - это то, что я искал.

| file1.csv | Последний доступ для записи | X: \ Рабочий стол \ Folder1 |

| file2.txt | Последний доступ для записи | X: \ Рабочий стол \ Folder2 |