创建新文件夹并设置 NTFS 权限。

创建新文件夹并设置 NTFS 权限。

我正在尝试构建一个脚本,该脚本将为我们的文件服务器上的新用户创建一个文件夹。然后从该文件夹中删除继承的权限并重新添加特定权限。我已成功添加文件夹(如果我在脚本中为其提供静态条目),授予域管理员权限,删除继承等...但我无法让它使用我设置为用户的变量。我不希望每次都有静态用户,我希望能够运行此脚本,让它向我询问用户名,然后它会出去创建文件夹,然后根据我提供的用户名授予同一用户对该文件夹的完整权限。我可以使用 Smithd 作为用户,如下所示:

新项目 \\fileserver\home$\Smithd –类型目录

但无法让它像这样引用用户:

新项目 \\fileserver\home$\$username –类型目录

以下是我所拥有的:

创建新文件夹并设置 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

我尝试了几种方法让它工作,但没有成功。欢迎任何想法或建议,谢谢。

答案1

在我以前的工作中,我记得能够使用旧的“mkdir”命令在我的 powershell 脚本中创建文件夹,但首先我建议引用你的路径并首先使用 echo/write-host 进行测试。试试这个,只是为了测试:

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

我无法使用 Windows 机器进行测试,但我猜测“$”也可能是一个问题。

尝试使用反引号来尝试逃避$

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

并且不要继续,直到您知道该字符串符合您的喜好。我认为您不需要在 read-host 中使用 -prompt,尽管这可能不是问题。write-hosting 始终是一个很好的健全性检查。

我希望能很快获得一台 Windows 机器,以便提供更好的帮助。

此外,如果感兴趣的话,您可以在程序顶部提供用户名作为参数,这样您就可以从另一个脚本重复调用该脚本,该脚本从 $file_server、$user_name 对的文件中读取名称。只需放入一个param( [string] $file_server, [string] $user_name )

祝你好运! :)

答案2

相关内容