将 csv 文件与文件夹文件进行比较



我正在尝试将csv文件与以下信息进行比较:

User1,ID1
User2,ID2
User3,ID3

到包含许多文件夹的文件夹文件,这些文件夹与 CSV 文件的第一列同名。

到目前为止,我有此代码,但它不起作用。

$input = Import-Csv 'C:Userscsvlist.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"
}

最终,我的目标是将 csv 的标题列与文件夹进行比较,看看它是否具有相同的名称,如果是,请使用 CSV 第二个标题列中的 ID 向匹配的文件夹添加新权限。我知道这比我的代码中的内容要多得多,但是婴儿步骤。

为什么要比较?您必须迭代结果。我会迭代 csv 并使用用户名执行测试路径。

$BaseDir = 'H:Test'
$input = Import-Csv 'C:Userscsvlist.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
}
}

因此,当您执行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
}
}

相关内容

  • 没有找到相关文章

最新更新