gpt4 book ai didi

powershell - 仅使用 NTFS 查找顶部文件夹

转载 作者:行者123 更新时间:2023-12-02 23:41:24 26 4
gpt4 key购买 nike

我想运行一个脚本来检查驱动器,看看是否有一个所有人设置为 NTFS 权限。目前我正在运行:

Get-ChildItem D:\ -Recurse | Where-Object {
(Get-Acl $_.FullName).Access | Where-Object {
$_.IdentityReference -eq 'Everyone'
}
} | Where-Object {
$_.Mode -match "d"
} | Format-Table FullName

这几乎可以正常工作,但我收到很多“指定的路径、文件名或两者都太长。完全限定的文件名必须少于 260 个字符”。

是否可以递归检查所有 D 驱动器但在最高继承级别停止脚本?

例如

如果我有 d:\test\test2 和 test2 从 test 继承 Everyone 我应该只看到

d:\测试

不是

d:\测试
d:\测试\测试2

因此。

最佳答案

只需检查未继承的 ACE。我还建议检查 $_.PSIsContainer而不是 $_.Mode ,并在检查 ACL 之前执行此操作。在 PowerShell v3 或更新版本上使用 -Directory Get-ChildItem 的开关仅用于将结果限制在目录中。

Get-ChildItem D:\ -Recurse | Where-Object {
$_.PSIsContainer -and
(Get-Acl $_.FullName).Access | Where-Object {
$_.IdentityReference -eq 'Everyone' -and
-not $_.IsInherited
}
} | Select-Object -Expand FullName

请注意,这不会处理超过 260 个字符的路径。这是 Win32 API 的一个限制,您需要不同的工具来处理更长的路径。

关于powershell - 仅使用 NTFS 查找顶部文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41506068/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com