我继承了一个Powershell脚本,远程客户使用该脚本递归搜索目录并导出(到csv)多个ACL值,包括Path,Owner,FileSystemRights,IdentifyReference和AccessControlType。 脚本效果很好,但我很好奇流程实际上是如何发生的。 下面是部分脚本,用于显示与我在下面的问题相关的代码。
部分脚本开始:
get-childitem $rootdir -recurse | where-object {$_.psIscontainer -eq $true} | foreach-object {
$a = ($_.Fullname)
$b = (get-acl $_.Fullname).Owner
$c = (get-acl $_.Fullname).Access
foreach ($c1 in $c) {
$d = $c1.FileSystemRights
$e = $c1.AccessControlType
部分脚本结束。
对于我的问题:如果在远程系统上运行此脚本,使用管理员权限和变量 $rootdir = \\someshare,则在哪个系统上解析 get-acl ...在托管文件夹结构的系统上,还是在运行 PS 脚本并映射到共享文件夹的远程系统上?
谢谢。
我最初的问题可能有点模糊,所以希望我能澄清一下。 通过在远程系统上使用 get-acl 并映射到服务器共享文件夹,调用 get-acl 会导致在 ACL 解析过程中服务器上的任何资源命中...磁盘 I/O、内存、CPU。 我不是程序员,所以请耐心等待我尝试正确表述我的问题。
假设您正确设置了所有身份验证(如果我正确理解您的计划,您会遇到双跃点身份验证问题),对Get-Acl
的调用将在运行脚本的系统上执行。
摘自 Get-ACL cmdlet 上的技术网文章
使用 Get-Acl cmdlet可以检索安全描述符 (访问控制列表)的文件、文件夹甚至注册表项
它检索指定的任何文件夹(包括远程文件夹)的 NTFS 权限。
在您的情况下,它将从运行脚本的计算机运行,并使用为检索 ACL 而提供的凭据向远程计算机进行身份验证