Сравнение файла CSV с файлом папки - PullRequest
0 голосов
/ 02 июля 2018

Я пытаюсь сравнить CSV-файл со следующей информацией:

User1,ID1
User2,ID2
User3,ID3

в файл папки со многими папками, имена которых совпадают с именами первого столбца файла csv.

Пока у меня есть этот код, но он не работает.

$input = Import-Csv 'C:\Users\csv\list.csv' -Header "Users","ID"

$folder = Get-ChildItem H:\Test | Sort-Object name

$compare = Compare-Object -ReferenceObject $input.Users -DifferenceObject $folder -IncludeEqual

if(($input.Users).SideIndicator -eq "=="){
    echo "true"
}else{
    echo "false"
}

В конечном счете, моя цель состоит в том, чтобы сравнить столбец header в csv с папками и посмотреть, имеет ли оно одинаковое имя, если да, добавить новое разрешение в сопоставляемую папку с идентификатором из второго заголовок столбец CSV. Я понимаю, что это намного больше, чем то, что у меня есть в моем коде, но ребенок делает шаги.

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

Почему сравнивать? Вы должны будете повторить результат. Я бы повторил csv и сделал бы Test-Path с именем пользователя.

$BaseDir = 'H:\Test'
$input = Import-Csv 'C:\Users\csv\list.csv' -Header "User","ID"

ForEach-Object ($Item in $input){
    $UserPath = Join-Path $BaseDir $Item.User
    If (Test-Path $UserPath -PathType Container){
        "User {0}  ID {1} Folder {2} exists" -f $Item.User,$UserPath,$Item.ID
    } else {
        # possibly create the folder
    }
}
0 голосов
/ 02 июля 2018

Итак, когда вы делаете Get-ChildItem, результатом является массив объектов. Это dotnet объекты со всеми их свойствами, методами и т.д., доступными для вас.

$folders = Get-ChildItem C:\Windows -Directory
foreach($line in $csv) { 
    $folder = $folders | Where-Object {$_.Name -eq $line.Name}
    if($folder -ne $null){
        #ACL magic goes here, there are a number of articles on this
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...