2016-03-07 83 views
0

此腳本獲取文件夾的名稱並使其成爲文件夾的所有者。但它不能讓所有者完全訪問。授予擁有者完全訪問權限的配置文件共享

$folder = "\\profileshare\profiles\" 
$users = (Get-Childitem $folder) 
foreach ($user in $users) { 
    $acl = Get-Acl $folder\$user 
    $current_owner = $acl.owner.split("\") 
    if ($user.Name.tolower() -ne ([string]$current_owner[1]).tolower()) { 
     Write-Host $user " folder needs owner changed, set to "$user " from " $acl.owner 
     $acl.SetOwner([System.Security.Principal.NTAccount]"$user") 
     Set-Acl $folder\$user $acl 
    } else { 
     Write-Host "Folder for $user set correctly" 
    } 
} 

人可以幫我給主人完全訪問權限?

回答

1

要讓所有者自動獲得完全訪問權限,您需要在父文件夾(\\profileshare\profiles)上設置一個ACE,授予對子文件夾和文件的完全控制CREATOR OWNER

$folder = '\\profileshare\profiles' 
$acl = Get-Acl -Path $folder 
$ace = New-Object Security.AccessControl.FileSystemAccessRule(
    'CREATOR OWNER', 
    'FullControl', 
    'ObjectInherit,ContainerInherit', 
    'InheritOnly', 
    'Allow' 
) 
$acl.AddAccessRule($ace) 
Set-Acl -Path $folder -AclObject $acl 

沒有你需要手動撤銷以前的所有者的權限和訪問權限授予新所有者的父文件夾此設置。

0

您是否在尋找答案?我上週五發布了這個相同的代碼,對於我很確定的人來說,它會完成你正在尋找的東西。這將爲給定用戶構建一個ACL,授予他們FullControl,並使子文件和文件夾繼承訪問權限。

您只需設置用戶對象ACE並將ACE添加到循環內的ACL中,其他所有內容都可以在循環之前定義一次。

$Rights = [System.Security.AccessControl.FileSystemRights]"FullControl" 
$InheritanceFlag = [System.Security.AccessControl.InheritanceFlags]"ObjectInherit,ContainerInherit" 
$PropagationFlag = [System.Security.AccessControl.PropagationFlags]::None 
$objType =[System.Security.AccessControl.AccessControlType]::Allow 
$folder = "\\profileshare\profiles\" 
$users = (get-childitem $folder) 
Foreach ($user in $users) 
{ 
    $acl = Get-Acl $folder\$user 
    $current_owner = $acl.owner.split("\") 
    if($user.Name.tolower() -ne ([string]$current_owner[1]).tolower()) 
    {    
     write-host $user " folder needs owner changed, set to "$user " from " $acl.owner 
     $objUser = New-Object System.Security.Principal.NTAccount("IIS_IUSRS") 
     $objACE = New-Object System.Security.AccessControl.FileSystemAccessRule($objUser, $Rights, $InheritanceFlag, $PropagationFlag, $objType) 
     $ACL.AddAccessRule($objACE) 
     $acl.SetOwner($objUser) 
     set-acl $folder\$user $acl 
    } 
    else 
    { 
     write-host "Folder for $user set correctly" 
    } 
} 
+0

我不希望只有一個用戶,我需要它是該文件夾的擁有者有完全訪問權限。 – user770022

+0

正確,這就是您在循環中定義用戶和ACE的原因。這正是你正在尋找的。 – TheMadTechnician

相關問題