获取长路径名上的文件夹 NTFS ACL

2023-12-26

我有一个 PS 脚本,如果分配了单个用户,它将返回 NTFS ACL,该脚本运行良好,直到我遇到超过 260 个字符的路径。我发现了很多关于路径太长问题的信息和一些解决方法,但我正在努力将解决方案集成到我的脚本中。有什么建议么?

Thanks!

$DateStart = Get-Date  
$Path = "E:\"           
$PermittedOU1 = "OU=Groups,dc=chiba,dc=localt"
$PermittedOU3 = "OU=System Accounts,OU=Accounts,dc=chiba,dc=local"
$PermittedACL1 = get-adgroup -Filter * -SearchBase $PermittedOU1 
$PermittedACL3 = get-aduser  -Filter * -SearchBase $PermittedOU3
$ObjectPathItem = Get-ChildItem -path $Path -Recurse | where-object {$_.PsIsContainer} | foreach-    object -process { $_.FullName } 
$howmany=0  
$Logfilename = "C:\Users\administrator\Documents\$(get-date -f yyyy-MM-dd-hh-mm).csv"


Add-Content $Logfilename "$DateStart`n"
$totalfolders=0
$i=0

ForEach ($Folder in $ObjectPathItem)
{
$totalfolders++
}



Foreach ($Folder in $ObjectPathItem)                                                
{                                                                            

   $ObjectACL = Get-ACL -Path $Folder                                            
   $i++
   $howmany=0 
   Write-Progress -id 1 -Activity "Folder Recursion" -status "Folders Traversed: "                 -PercentComplete (($i / $totalfolders) * 100)


   Foreach ($ACL in $ObjectACL.access)                                       
    {

        $ACLstring = $ACL.identityreference.Value                           
        $ACLstring = $ACLstring.Replace("CHIBA\","")                        
        if (($ACLstring -notin $PermittedACL1.name)`
        -and ($ACLstring -notin $PermittedACL3.SamAccountName)`
        -and ($ACLstring -notin "NT AUTHORITY\SYSTEM") `
        -and ($ACLstring -notin "BUILTIN\Administrators") `
        -and ($ACLstring -notin "CREATOR OWNER"))   
         {
                 $newline = "`"$Folder`"" + "," + "$ACLString"
                 Add-Content $Logfilename "$newline"   
                 $howmany+=1 
            }

        else {
                $howmany+=1
             }

    }


}
$DateEnd = Get-Date
Add-Content $Logfilename "`n`n$DateEnd"

通常可以使用的一种选项是使用 New-PSDrive 创建映射驱动器。就像是:

Try{
    $ObjectACL = Get-ACL -Path $Folder
}
Catch{
    $SubPathLength = $Folder.FullName.substring(0,200).LastIndexOf('\')
    $NewTempPath = $Folder.FullName.SubString(0,$SubPathLength)
    New-PSDrive -Name Temp4ACL -Provider FileSystem -Root $NewTempPath
    $ObjectACL = Get-ACL "Temp4ACL:$($Folder.FullName.SubSTring($SubPathLength,$Folder.FullName.Length-$SubPathLength))"
}

这样就能找到最后一个\在路径中的第 200 个字符之前,抓取完整路径的一个子字符串,直到该文件夹​​名称的末尾并创建它的临时驱动器,然后根据临时驱动器和剩余路径获取 ACL。所以这条路:

C:\Temp\Subfolder\Really Long Folder Name\Another Subfolder\ABCDEFGHIJKLMNOPQRSTUVWXYZ\We Are Really Pushing It Now\Im Running Out Of Folder Name Ideas\Hello My Name Is Inigo Montoya\You Killed My Father Prepare To Die\ReadMe.txt

在倒数第二个反斜杠处被剪切。我最终会从以下位置获得 ACL:

Temp4ACL:\You Killed My Father Prepare To Die\ReadMe.txt
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取长路径名上的文件夹 NTFS ACL 的相关文章

随机推荐

  • smart-table - 如何重置过滤器集合?

    Angular 和智能表新手 此智能表设置可以正常工作并正确过滤 但尝试重置或清除过滤器不会重新过滤表 为什么不 使用 ng model 绑定更新输入是否不会触发 smart table 正在寻找的监视 Plunker 可以在这里找到 ht
  • h1 和跨度

    在我的 html 中使用 h1 h6 标签时 我不断收到 w3c 验证器上的错误消息 我对此很陌生 我已经尝试了很多次来解决这个问题 但我不能 该文本在我的网站上显示得很好 但无法验证 我该如何解决这个问题 错误信息如下 第 34 行 第
  • 如何在CodeIgniter中获取表的最后一条记录?

    如何在Codeigniter中获取表的最后一条记录 我的表名称是 post 我想获取该表中最后一条记录的最后一个 id 或下一个 id recommended don t use from getting rows insted of pl
  • 如何使用 Web API 2 + AspNet Identity 2 扩展 IdentityRole

    我正在尝试扩展最新版本的 Visual Studio 2013 中的 Web API 2 包含个人帐户 模板中提供的 AspNet IdentityRole 类 当我点击 api roles 时 它返回一个空数组 身份模型 namespac
  • python 中不可散列对象的集合

    有没有相当于python的东西set对于不可散列的对象 例如可以相互比较但不能散列的自定义类 如果你的值不可散列 那么就有no point在使用set 只需使用一个list反而 如果您的所有对象所能做的就是测试相等性 那么您必须扫描每个元素
  • WC_Checkout 挂钩中订单行项目和订单元之间的差异

    我正在创建一个正在使用的插件woocommerce checkout update order meta用于添加订单项元数据的钩子 我有一个插件叫WooCommerce TM 额外产品选项安装 这个插件使用woocommerce check
  • 使用forever和always语句

    以下两个代码都会生成一个时钟 我需要知道除了时钟生成之外 永远循环是否还有其他用途 我只在时钟一代中遇到过永远 如果只是为了这个目的 那岂不是毫无用处 initial begin clk 0 forever begin 5 clk clk
  • CakePHP 和 SSL

    我刚刚在使用 CakePHP 的网站上安装了 SSL 证书 现在该网站不再从 webroot 加载文件 图像 css 文件 有任何想法吗 我认为 SSL 安装影响了 mod rewrite 或类似的东西 我刚刚遇到这个问题 检查您的 apa
  • SQL“AT TIME ZONE”,查询范围并使用“SELECT”所有列(表名。*)表达式

    I use timestamp 3 with time zone在我的数据库中 当需要一个表时 这几乎是我的情况的任何情况 我需要在比以下更复杂的查询中选择表的所有列 我的问题是如何使用 SQL 获取所需时区的时间戳 带时区 at time
  • svn - 如何下载 llvm、clang 的特定版本

    当我 svn co llvm 3 3 clang 3 3 compiler rt 时 构建通过 但构建没有在构建 调试 断言中创建 clang exe 当我只为 svn co build 添加 clang 时 没有通过 但他创建了 clan
  • 由于长数据类型导致的 VBA-Excel 溢出错误

    这似乎太容易了 但我是如此绝望 我需要做的是得到最后的值列 D 的 数量大 前任 987654321 如果值只有两位数 则代码没问题 我只是无法识别问题所在 Dim lastRow As Long lastRow Cells Rows Co
  • PostgreSQL:如何使用generate_series()找出列中缺失的数字?

    SELECT commandid FROM results WHERE NOT EXISTS SELECT FROM generate series 0 119999 WHERE generate series results comman
  • 如何仅将一个窗口保留在我的应用程序中的所有其他窗口之上?

    我想在我的 C Windows 窗体应用程序中显示一个状态窗口 在应用程序等待获取锁时通知用户 这是应用程序定义的事情 但是 该窗口应该是可见的 并且始终保持在应用程序的所有其他窗口之上 即使用户单击另一个窗口 例如其后面的较大主窗口 也是
  • 如何使用 css 通过 href #id 隐藏锚标记

    我有不同的带有 href ids 的锚标记 我需要使用通用的 css 规则来隐藏它们 Content xxxxxxxxx a href tab1 Table 1 a Content xxxxxxxxxxxx a href tab2 Tabl
  • 编码风格:锁定/解锁内部还是外部?

    另一个可能愚蠢的问题 并发应该如何锁定 执行者或调用者应该负责锁定线程吗 例如没有特定的语言 Caller callAnotherThread executor method Executor method lock doSomething
  • Apache http 服务器问题

    我正在使用 Apache 版本 2 2 20 ubuntu 并尝试使用自定义 httpd conf 设置 但是我收到以下错误消息 并且希望能够为我提供任何指导 我是开发团队的一员 并获得了这个自定义的 httpd conf 文件 因此我并不
  • 捆绑与捆绑器/捆绑与捆绑安装

    两者有什么区别bundle bundler命令 有什么区别bundle bundle install 如果没有差异 为什么有多个命令做同样的事情 可执行文件因此可以互换使用 您可以在bundler exe https github com
  • 使用 Log4Net.ErrorFormat 如何记录堆栈跟踪? [复制]

    这个问题在这里已经有答案了 我想使用错误格式方法 因为它更容易阅读 更安全 更快 但我也想记录异常堆栈跟踪 I tried log ErrorFormat My 0 message pretty exception 但它只记录 我漂亮的消息
  • 如何设置 Doxygen 的输入目录?

    我有一个保存所有源文件和头文件的目录 我想运行 Doxygen 来生成这些源代码的文档 但是 我不想更改此目录中的任何内容 特别是我无法添加保存 Doxygen 文档的子目录 我怎样才能实现我所需要的 我想我需要做以下事情 我创建并转到 文
  • 获取长路径名上的文件夹 NTFS ACL

    我有一个 PS 脚本 如果分配了单个用户 它将返回 NTFS ACL 该脚本运行良好 直到我遇到超过 260 个字符的路径 我发现了很多关于路径太长问题的信息和一些解决方法 但我正在努力将解决方案集成到我的脚本中 有什么建议么 Thanks