【问题标题】:Auditing NTFS permissions using input list of folders使用文件夹的输入列表审核 NTFS 权限
【发布时间】:2014-11-19 02:14:29
【问题描述】:

我正在尝试对某些文件夹进行审核。我需要获得输入文件中列出的每个文件夹的 NTFS 权限。我有一个包含文件夹路径的 folderlist.txt。

这是我的脚本:

$InputFile = "C:\Folderlist.txt"
$OutputFile = "C:\FolderPermissions.csv"
$FolderList = Get-Content $InputFile

ForEach ($Folder in $FolderList)
{
    $Permissions = (Get-ACL $Folder).access | ForEach-Object {$_ |
        Add-Member -MemberType NoteProperty -Name Folder -Value $Folder}
    $Report += $Permissions
}

$Report | Select-Object Folder,IdentityReference,FileSystemRights,IsInherited |
    Where {$_.Folder -ne $Null -and $_.IdentityReference -like "HARRAHS*" -and $_.IsInherited -ne "TRUE"} |
    Export-CSV $OutputFile -NoTypeInformation

但它没有给出任何输出。我是powershell noob,有人可以指导我并告诉我我做错了什么吗? 我需要的输出基本上是文件夹和组的名称以及具有权限的用户。例如:

Folder Path    IdentityReference    AccessControlType
C:\Folder1\    DOMAIN\User1         Read
C:\Folder1\    DOMAIN\Group1        Write
C:\Folder2\    DOMAIN\User2         Modify
C:\Folder2\    DOMAIN\Group2        Full

非常感谢任何帮助。非常感谢。

【问题讨论】:

    标签: powershell file-permissions


    【解决方案1】:

    这是你的罪魁祸首:

    $Permissions = (Get-ACL $Folder).access | ForEach-Object {
      $_ | Add-Member -MemberType NoteProperty -Name Folder -Value $Folder
    }
    

    您将 ACE 传送到一个循环中,在该循环中为每个 ACE 添加一个属性。但是,| Add-Member 构造不会输出修改后的对象,因此没有任何东西可以分配给$Permissions

    这可以通过在Add-Member 语句之后添加; $_ 来解决,以便将对象重新注入管道:

    $Permissions = (Get-ACL $Folder).access | ForEach-Object {
      $_ | Add-Member -MemberType NoteProperty -Name Folder -Value $Folder; $_
    }
    

    不过,我建议采用稍微不同的方法。由于您稍后会过滤对象属性,因此您可以将 ACE 直接通过管道传输到 Select-Object cmdlet 并使用 calculated property 添加路径:

    Get-Content $InputFile | % {
      $Folder = $_
      (Get-Acl $Folder).Access |
        Select-Object @{n='Folder';e={$Folder}}, IdentityReference,
                      FileSystemRights, IsInherited
    } | ? {
      $_.Folder -ne $null -and
      $_.IdentityReference -like "HARRAHS*" -and
      $_.IsInherited -ne 'True'
    } | Export-CSV $OutputFile -NoTypeInformation
    

    【讨论】:

      猜你喜欢
      • 2010-10-28
      • 2019-03-06
      • 1970-01-01
      • 2020-07-15
      • 2016-03-13
      • 1970-01-01
      • 1970-01-01
      • 2012-04-25
      • 1970-01-01
      相关资源
      最近更新 更多