Windows 获取Acl在UNC路径上似乎不起作用?
我很难让Windows 获取Acl在UNC路径上似乎不起作用?,windows,powershell,permissions,acl,Windows,Powershell,Permissions,Acl,我很难让Get Acl在UNC路径上工作,以获得目录以及所有底层文件和目录的共享权限 我使用的代码如下所示: $OutFile = "C:\Users\xxxx\Desktop\Permissions.csv" $Header = "Folder Path,IdentityReference,AccessControlType,IsInherited,InheritanceFlags,PropagationFlags,FileSystemRights" del $OutFile Add-Cont
Get Acl
在UNC路径上工作,以获得目录以及所有底层文件和目录的共享权限
我使用的代码如下所示:
$OutFile = "C:\Users\xxxx\Desktop\Permissions.csv"
$Header = "Folder Path,IdentityReference,AccessControlType,IsInherited,InheritanceFlags,PropagationFlags,FileSystemRights"
del $OutFile
Add-Content -Value $Header -Path $OutFile
$RootPath = "\\intranet\sites\folder1\folder2\target-folder-as-root"
$Folders = dir $RootPath -Recurse
#| where {$_.psiscontainer -eq $true}-recurse
foreach ($Folder in $Folders) {
$ACLs = Get-Acl $Folder.Fullname | ForEach-Object { $_.Access }
foreach ($ACL in $ACLs) {
$OutInfo = $Folder.Fullname + "," + $ACL.IdentityReference + "," +
$ACL.AccessControlType + "," + $ACL.IsInherited + "," +
$ACL.InheritanceFlags + "," + $ACL.PropagationFlags + "," +
$ACL.FileSystemRights
Add-Content -Value $OutInfo -Path $OutFile
}
}
没有考虑到这可能导致的文件名大小限制问题,我得到以下错误:
Get-Acl : Method failed with unexpected error code 1.
At C:\Users\xxxx\Documents\ntfs_permissions.ps1:12 char:10
+ $ACLs = Get-Acl $Folder.Fullname | ForEach-Object { $_.Access }
+ ~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Get-Acl], InvalidOperationException
+ FullyQualifiedErrorId : System.InvalidOperationException,Microsoft.PowerShell.Commands.GetAclCommand
获取Acl:方法失败,错误代码为1。
位于C:\Users\xxxx\Documents\ntfs\u权限。ps1:12字符:10
+$ACLs=Get-Acl$Folder.Fullname | ForEach对象{$\.Access}
+ ~~~~~~~~~~~~~~~~~~~~~~~~
+CategoryInfo:NotSpecified:(:)[Get Acl],InvalidOperationException
+FullyQualifiedErrorId:System.InvalidOperationException,Microsoft.PowerShell.Commands.GetAclCommand
我发现有关使用UNC路径列出共享驱动器上的共享权限的文档(我不想列出从根目录开始的权限,但只从子文件夹开始的权限)非常有限。尝试使用:$ACLs=(Get Acl$Folder.fullname)。Access
不要使用:$ACLs=获取Acl$Folder.Fullname | ForEach对象{$.Access}
尝试使用:$ACLs=(获取Acl$Folder.Fullname)。Access
取而代之的是:
$ACLs=Get Acl$Folder.Fullname | ForEach Object{$\u.Access}
Get Acl将显示标准SMB共享路径的文件系统权限,但是我在尝试对SharePoint站点使用Get Acl时遇到的错误与您尝试执行的错误相同。我相信这可能是因为它实际上使用的是WebDav而不是SMB。您能否进一步指导我如何获得共享文件的共享权限?我恐怕没有太多SharePoint管理经验。我建议您对可用的SharePoint PowerShell管理单元或模块进行一些研究,以查看它们是否具有允许您获取文档库权限的cmdlet。这里的任何想法都是,将UNC路径映射到网络驱动器不起作用。get-ACL将显示标准SMB共享路径的文件系统权限,但是,我在尝试对SharePoint网站使用get ACL时遇到了与您尝试执行的相同的错误。我相信这可能是因为它实际上使用的是WebDav而不是SMB。您能否进一步指导我如何获得共享文件的共享权限?我恐怕没有太多SharePoint管理经验。我建议您对可用的SharePoint PowerShell管理单元或模块进行一些研究,以查看它们是否具有允许您获取文档库权限的cmdlet。这里的任何想法都是,将UNC路径映射到网络驱动器是行不通的。