Сравнение имен папок из разных каталогов и вывод обоих результатов в CSV - PowerShell - PullRequest
1 голос
/ 25 марта 2020

У меня есть две директории "A" и "B". «A» содержит папки ab c, def, ghi, jkl, а «B» содержит ghi, jkl, mno. Мне нужен вывод, как показано ниже в Csv: -

enter image description here

Я новичок в PowerShell, поэтому погуглил о сравнении папок и написал ниже скрипт

$SourceFolder = "A"
$ArchiveFolder = "B"

$Folder1 = Get-childitem $SourceFolder
$Folder2 = Get-childitem $ArchiveFolder

Compare-Object $Folder1 $Folder2 -PassThru

Но приведенный выше код просто дает различия, но не в формате, необходимом выше.

1 Ответ

2 голосов
/ 25 марта 2020

Если я понимаю вопрос, это может быть один из способов сделать это:

$SourceFolder  = "X:\A"
$ArchiveFolder = "X:\B"

$Folder1 = Get-ChildItem -Path $SourceFolder -Directory
$Folder2 = Get-ChildItem -Path $ArchiveFolder -Directory

$result = Compare-Object -ReferenceObject $Folder1 -DifferenceObject $Folder2 -Property Name -IncludeEqual |
            Sort-Object 'SideIndicator' | ForEach-Object {
                $folder = $_.Name
                switch ($_.SideIndicator) {
                    '<=' { $a = $folder; $b = $null;   $m = 'N' }
                    '==' { $a = $folder; $b = $folder; $m = 'Y' }
                    '=>' { $a = $null;   $b = $folder; $m = 'N' }
                }
                [PsCustomObject]@{'A'= $a ; 'B' = $b; 'Matching' = $m }
            }

#output on screen
$result

# output to CSV file
$result | Export-Csv -Path 'X:\TheOutput.csv' -NoTypeInformation

Вывод на экран:

A   B   Matching
-   -   --------
abc     N       
def     N       
ghi ghi Y       
jkl jkl Y       
    mno N
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...