如何通过Powershell将用户的NTFS权限授予文件夹

我试图build立一个脚本,将为我们的文件服务器上的新用户创build一个文件夹。 然后从这个文件夹中获得inheritance的权利,并添加特定的权利。我已经成功添加文件夹(如果我给它一个静态条目),给域pipe理员权限,删除inheritance等…但我无法让它使用我设置为用户的variables。 我不希望每次都有一个静态的用户,我希望能够运行这个脚本,要求我input一个用户名,然后出去创build这个文件夹,然后给这个用户完全的权限基于我提供的用户名的文件夹。 我可以使用Smithd作为用户,如下所示:

New-Item \\ fileserver \ home $ \ Smithd -Type目录

但不能像这样引用用户:

New-Item \\ fileserver \ home $ \ $ username -Type目录

这是我有:

创build一个新的文件夹并设置NTFS权限。

$username = read-host -prompt "Enter User Name" New-Item \\\fileserver\home$\$username –Type Directory Get-Acl \\\fileserver\home$\$username $acl = Get-Acl \\\fileserver\home$\$username $acl.SetAccessRuleProtection($True, $False) $rule = New-Object System.Security.AccessControl.FileSystemAccessRule("Administrators","FullControl", "ContainerInherit, ObjectInherit", "None", "Allow") $acl.AddAccessRule($rule) $rule = New-Object System.Security.AccessControl.FileSystemAccessRule("Domain\Domain Admins","FullControl", "ContainerInherit, ObjectInherit", "None", "Allow") $acl.AddAccessRule($rule) $rule = New-Object System.Security.AccessControl.FileSystemAccessRule("Domain\"+$username,"FullControl", "ContainerInherit, ObjectInherit", "None", "Allow") $acl.AddAccessRule($rule) Set-Acl \\\fileserver\home$\$username $acl 

我已经尝试了几种方法来使它工作,但没有运气。 任何想法或build议将受到欢迎,谢谢。

在我之前的工作中,我记得能够使用旧的“mkdir”命令在我的powershell脚本中创build文件夹,但是要开始,我build议首先引用您的path并使用echo / write-host进行testing。 试试这个,只是为了testing:

write-host "\\${file_server}\home$\${user_name}"

我没有访问Windows机器来testing,但我猜“$”也可能是一个问题。

试着用back-tick试试并逃脱$

 write-host "\\${file_server}\home`$\${user_name}" 

直到你知道弦乐符合你的喜好为止。 我不认为你需要读取主机的提示,尽pipe这可能不是问题。 写入托pipe总是一个很好的理智检查。

我希望很快能够访问Windows机器,这样我可以提供更好的帮助。

另外,如果感兴趣的话,可以在程序的顶部提供用户名作为参数,这样你就可以反复从另外一个名字的$ file_server,$ user_name对读取名字。 只需要一个param( [string] $file_server, [string] $user_name )

祝你好运! 🙂