如何解决多个共享的导出权限
由于我正在处理敏感数据,我无法使用第三方工具(我知道它们存在但无法使用它们)
我真的需要创建一个脚本来导出多个共享的权限(我只需要父文件夹,因为它们包含数千个子文件夹) 这个想法是我不知道如何放置“-Recursive”,以便将整个输出导出到同一张纸上,而不是为每个共享创建一个新的。 已经排除了用户类型,我得到了 Get-Item,所以不会有任何子文件夹
如果我尝试下面的一个,它只会在同一张纸上用下一行覆盖。 任何形式的支持将不胜感激
'''
$Folder="\\storage1\a\b\c\d"
$Folder="\\storage2\a\b\c\d\e"
$Folder="\\storage2\a\l\m"
$AllFolders = Get-Item -Path $Folder -Force --recurse
$Results = @()
Foreach ($Folder in $AllFolders) {
$Acl = Get-Acl -Path $Folder.FullName
foreach ($Access in $acl.Access) {
if ($Access.IdentityReference -notlike "BUILTIN\Administrators" -and $Access.IdentityReference -notlike "domain\Domain Admins" -and $Access.IdentityReference -notlike "CREATOR OWNER" -and $access.IdentityReference -notlike "NT AUTHORITY\SYSTEM") {
$Properties = [ordered]@{'FolderName'=$Folder.FullName;'AD Group'=$Access.IdentityReference;'Permissions'=$Access.FileSystemRights;'Inherited'=$Access.IsInherited}
$Results += New-Object -TypeName PSObject -Property $Properties
}
}
}
$Results | Export-Csv -path "C:\Scripts\Permissionstest.csv"
'''
解决方法
看起来在路径下你必须将所有值放在同一行上,这是有道理的。你不能声明一个对象有多个值。现在,它起作用了:)
**$Folder="\\storage1\a\b\c\d","\\storage2\a\b\c\d\e","\\storage2\a\l\m"
$AllFolders = Get-Item -Path $Folder -Force
$Results = @()
Foreach ($Folder in $AllFolders) {
$Acl = Get-Acl -Path $Folder.FullName
foreach ($Access in $acl.Access) {
if ($Access.IdentityReference -notlike "BUILTIN\Administrators" -and $Access.IdentityReference -notlike "domain\Domain Admins" -and $Access.IdentityReference -notlike "CREATOR OWNER" -and $access.IdentityReference -notlike "NT AUTHORITY\SYSTEM") {
$Properties = [ordered]@{'FolderName'=$Folder.FullName;'AD Group'=$Access.IdentityReference;'Permissions'=$Access.FileSystemRights;'Inherited'=$Access.IsInherited}
$Results += New-Object -TypeName PSObject -Property $Properties
}
}
}
$Results | Export-Csv -path "C:\Scripts\Permissionstest.csv"**
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。