我正在尝试将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
}
}