0

我一直在考虑为我们的用户创建 Home Drives。我们最近收到了来自高级管理层的请求,要求将这些文件夹的访问权限锁定在一个系统管理员组和每个用户的个人文件夹中。

我们将这些文件夹的创建委托给我们的帮助台,但不希望他们在创建后有权访问这些文件夹。

我编写了一个 PowerShell 脚本,它创建文件夹并根据一些用户输入设置 ACL,但我无法找到一种方法让它为对目录具有有限权限的用户正确运行。如果我用我的帐户运行它,它会完全按照我的需要运行。

Set-Variable name -value (Read-Host -Prompt "Please Enter the username")

Set-Variable location -Value (Read-Host -Prompt "Please Enter the location of the user")
        if ($location -eq "loc1") {Set-Variable homepath "\\server1\folder"}
        elseif ($location -eq "loc2") {Set-Variable homepath "\\server2\folder"}
        elseif ($location -eq "loc3") {Set-Variable homepath "\\server3\folder"}
        elseif ($location -eq "loc4") {Set-Variable homepath "\\server4\folder"}
        elseif ($location -eq "loc5") {Set-Variable homepath "\\server5\folder"}

    #Fills variable used to set ACL on the folder.
    Set-Variable domainuser -value "Domain\$name"

$newfolder = new-item -ItemType Directory -path $homepath -Name $name
$Rights = [System.Security.AccessControl.FileSystemRights]"FullControl,Modify,ReadAndExecute,ListDirectory,Read,Write"
$InheritanceFlag = @([System.Security.AccessControl.InheritanceFlags]::ContainerInherit,[System.Security.AccessControl.InheritanceFlags]::ObjectInherit)
$PropagationFlag = [System.Security.AccessControl.PropagationFlags]::None
$objType =[System.Security.AccessControl.AccessControlType]::Allow
$objUser = New-Object System.Security.Principal.NTAccount "$domainuser"
$objACE = New-Object System.Security.AccessControl.FileSystemAccessRule `
      ($objUser, $Rights, $InheritanceFlag, $PropagationFlag, $objType)
$ACL = Get-Acl -Path $NewFolder
$ACL.AddAccessRule($objACE)
    Set-ACL -Path $NewFolder.FullName -AclObject $ACL

我知道这不是一个脚本问题/问题,而是一个环境/执行类型的事情,但我愿意接受任何关于如何最好地实现我需要的建议。如果需要的话,我不会反对存储服务帐户凭据,但我已经尝试过了,但成功有限。

一如既往,任何帮助表示赞赏!

4

1 回答 1

0

不确定这是否适用于您的环境和 SLA,但一种解决方案可能是将输入与实际处理分开,因此您最终编写了 2 个脚本。例如 1-) 发送 HomeFolderCreationData 2-) 接收 HomeFolderCreationData

第一个脚本可以由任何技术人员运行。它将从他们那里收集信息并将其提交到他们将具有写入权限的位置。它可能也应该记录有关该作业的日志($env:UserName、$env:ComputerName、Time Of Event 等)

然后,第二个脚本将获取数据并执行实际工作。第二个将是一个按您的 SLA 要求频繁运行的计划作业,并且运行它的服务帐户应该具有创建文件夹的权限。

据我所知,PowerShell 不允许您正在寻找的那种升级,所以这是我发现可以很好地解决这个问题的一种方法。

于 2013-09-27T22:11:33.863 回答