如何让Powershell从单个CSV单元中读取多个值?

时间:2016-08-12 22:45:40

标签: csv powershell permissions

我正在尝试一次将权限应用于多个文件夹。我有一个.csv文件,其中一列中的文件夹路径和第二列中的安全组。大多数文件夹都有多个可访问的组。 .csv采用以下格式:

folderpath        groupname
----------        ---------
C:\Folder1        Group1
C:\Folder2        Group2, Group3

我的代码目前不会应用权限,因为某些groupname单元格中有多个值。如果只列出一个组,它将适用。

#Specify CSV location
$csv = import-csv G:\testcsv.csv

#Start loop
foreach($masterlist in $csv)

{

$folderpath = $masterlist.folderpath
$groupname = $masterlist.groupname

#Apply permission to folderpath
add-ntfsaccess -path $folderpath -account $groupname -accessrights modify,synchronize

}

例如,如果我运行上面的代码,Group1将成功获得C:\ Folder1的权限。但是C:\ Folder2将没有应用,因为Group2和Group3都在同一个单元格中。我可以调整我的代码,而无需手动分离.csv中的数百个单元格吗?

感谢您的帮助!!!!!

1 个答案:

答案 0 :(得分:1)

只需创建内部循环foreach Group :)最简单的方法

 #Start loop
foreach($masterlist in $csv)

{
$folderpath = $masterlist.folderpath
$groupnames = $masterlist.groupname -split ","

foreach ($group in $groupnames ) {

#Apply permission to folderpath
add-ntfsaccess -path $folderpath -account $group -accessrights modify,synchronize

}
}    

这是adHoc的反应,但我认为你明白了。