Powershell将ACL权限导出到CSV

Powershell将ACL权限导出到CSV,powershell,powershell-2.0,Powershell,Powershell 2.0,我仍在学习powershell,目前我有以下脚本: $users = Get-Acl $Path | Select-Object -ExpandProperty access | ft identityreference | where { $_.identityreference -like "UK\"} $Path是服务器上特定共享的位置。我目前有一个名为“test”的CSV文件,在同一台服务器上有大约100个共享

我仍在学习powershell,目前我有以下脚本:

$users = Get-Acl $Path | 
        Select-Object -ExpandProperty access |
            ft identityreference | 
                where { $_.identityreference -like "UK\"}
$Path是服务器上特定共享的位置。我目前有一个名为“test”的CSV文件,在同一台服务器上有大约100个共享名(第一列标题名为“ShareNames”),第二列名为“GroupName”

我需要更新此脚本以搜索CSV文件中名为“test.CSV”的第一列,并在第二列中推出对该共享的相应组权限。我还必须承认脚本的最后一部分不起作用:(我很难筛选出我们拥有的一个普通组名,因为我不希望每个仅共享的组名都以“uk\gro…”开头,因此列出整个组名列表)


感谢您提供的任何指导/帮助

我会选择
-match
而不是
-like
,并跳过
格式表
。以下内容将使用regex
^UK\\\
过滤其属性上的ACE
标识引用
——我假设“UK”是ACEs中组名的域部分:

$user = Get-Acl $path |
  Select-Object -ExpandProperty access |
    Where-Object { $_.IdentityReference -match '^UK\\' }
然后,您可以根据需要
ft

$user | Format-Table

如果需要输入路径的CSV,可以通过管道将
导入CSV
导入到围绕上述示例包装的
ForEach对象中

 Import-Csv test.csv |
   ForEach-Object {
     Write-Output "ACEs on $($_.ShareNames) matching 'UK\'"
     Get-Acl $_.ShareNames |
       Select-Object -ExpandProperty access |
         Where-Object { $_.IdentityReference -match '^UK\\' }
   }

我仍然不清楚您打算如何填充“GroupName”列,因为以“UK\”开头的组可能有多个条目。

感谢您解决了过滤组名的第一个问题。现在我需要一种方法,从csv中读取100个共享名位置,并将结果导出到第二列的同一csv文件中。@Phil要澄清,您想读取csv,然后或者每行执行上面的
获取Acl
,然后将共享和ACE写回CSV?我有一个CSV,有两列,第一列环绕100个共享文件夹位置,第二列为空,我想在第二列中填入您刚才帮助我完成的脚本中的所有filterd安全组。above只需要一条路径,我需要编辑并允许它读取csv和所有共享。在编辑过程中,您需要指出“使用所有筛选器和安全组填充第二个collumn”的含义——这是一个分隔列表吗?具体的?等等。。。