Я застрял в попытке отформатировать свою таблицу вывода для команды 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 |