Powershell CSV Directory - PullRequest
       2

Powershell CSV Directory

2 голосов
/ 20 июня 2019

Я пытаюсь разобрать набор каталогов, чтобы увидеть, какие файлы в них.

Точнее говоря, у меня есть каталог, который содержит каждую букву алфавита, а затем некоторые другие каталоги.В каталогах писем есть еще один каталог писем и некоторые другие.В этом каталоге есть имена пользователей.В каталоге имени пользователя есть каталоги и файлы.

|---------------------------------------------
| root
|   \
|    S
|     \
|      S
|       \
|        Smith, John
|                   \
|                    file1, file2, file3, ...
|----------------------------------------------

Это соответствует структуре, о которой я говорил выше.Я пытаюсь получить имена файлов в CSV, чтобы я мог получить следующую информацию: Пользователь, Файл1, Файл2, Файл3, Путь, LastModified, Создан.

Конечная цель для этого - пойтичерез каждый файл и сравните имена файлов с активными пользователями в AD, и посмотрите, какие файлы есть у каждого пользователя для целей аудита.Если есть лучший способ сделать это, я все уши.

Я попытался сделать это с помощью следующего кода, но постоянно зависал.

Также файл M помечен как M1, в то время какдругие - буквы, поэтому у меня есть случайное утверждение IF / THEN там.

1

function Get-AccessManagementUsersDocuments(){

    $alph = @("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z");
    $Path = "...LOCATIONPATH...";
    $savePath = "...SAVEPATH..."

    foreach ($alph in $alph){
        if($alph -ne "M"){
            $filePath = Get-ChildItem -Path $Path/$alph/$alph | % { $_.FullName}
            $fileName = Get-ChildItem -Path $Path/$alph/$alph | % { $_.Name}
        } else {
            $filePath = Get-ChildItem -Path $Path/M1/M | % { $_.FullName}
            $fileName = Get-ChildItem -Path $Path/M1/M | % { $_.Name}
        }

        foreach ($filePath in $filePath){
            Get-ChildItem $filePath | %{$_.Name}
        }
    }
}

1 Ответ

1 голос
/ 20 июня 2019

Зачем затруднять указание конкретных файлов? Это выведет образец ниже.

Я был бы осторожен, хотя, из-за запятой в "Справочнике".

PSChildName     Directory       FullName                            LastWriteTime
-----------     ---------       --------                            -------------
Testfile.ps1    Smith, John     C:\temp\Smith, John\Testfile.ps1    27/03/2019 10:05:47 AM
Testfile1.csv   Smith, John     C:\temp\Smith, John\Testfile1.csv   18/06/2019 12:46:36 PM
Testfile2.csv   Smith, John     C:\temp\Smith, John\Testfile2.csv   18/06/2019 12:38:07 PM
Testfile3.csv   Smith, John     C:\temp\Smith, John\Testfile3.csv   18/06/2019 3:17:00 PM
Testfile4.csv   Smith, John     C:\temp\Smith, John\Testfile4.csv   18/06/2019 12:58:06 PM

1006 *

$Path = "C:\temp"
$savePath = "...SAVEPATH..."

$Files = Get-ChildItem -Path $Path -File -Recurse | Select PSChildName, Directory, FullName, LastWriteTime
Foreach($file in $files) {
    $File.Directory = ($File.Directory -split '\\')[-1]
}
$Files | export-CSV -Path $savePath -NoTypeInformation
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...