2015-08-13 67 views
0

我爲學區工作,並且最近將每個工作人員的用戶文件夾移至新的文件服務器。因此,文件結構如下所示:使用PowerShell更改文件服務器上的權限

E:

人員

金石門
bconlon
crichards
fgrant

由於每個用戶分配通過Active Directory中的主目錄,我用下面的PowerShell腳本重新映射每個人的主驅動器一舉:

Get-ADUser -Filter * -SearchBase 'OU=BES,OU=BPS,DC=bourne,DC=k12,DC=ma,DC=us' | ForEach-Object { 
Set-ADUser $_.SamAccountName -HomeDrive "H:" -HomeDirectory "\\bpsfile\staff\$($_.SamAccountName)" 
} 

這偉大的工作。但是,我現在的問題是有權限。整個樹中每個目錄的所有者都是管理員,現在沒有用戶可以寫入他們自己的目錄。

我想知道是否有類似的方法來使用PowerShell來查找樹中每個文件夾的名稱(它基於AD中相同的用戶名,即jsmith),然後將該用戶名的所有權限授予該文件夾和它的所有子文件夾。

感謝您的任何見解!

PS文件服務器爲Windows Server 2008 R2標準

回答

1

您可以使用此:再次設置

集Deafult值

[Array]$Rights = "ReadAndExecute","Write","Modify" 
[Array]$InheritanceFlag = @("ContainerInherit","ObjectInherit") 
[Array]$PropagationFlag = "None" 
[String]$AccessType = "Allow" 

$AccessRights = [System.Security.AccessControl.FileSystemRights] $Rights 
$InheritanceFlags = [System.Security.AccessControl.InheritanceFlags]$InheritanceFlag 
$PropagationFlags = [System.Security.AccessControl.PropagationFlags]$PropagationFlag 
$Type = [System.Security.AccessControl.AccessControlType]$AccessType 

運行您的過濾器 - 准許代碼

Get-ADUser -Filter * -SearchBase 'OU=BES,OU=BPS,DC=bourne,DC=k12,DC=ma,DC=us' | 
ForEach-Object { 

$Folder = "\\bpsfile\staff\$($_.SamAccountName)" 
$SAMAccountName = $_.SAMAccountName 

$NTAccount = [System.Security.Principal.NTAccount]($SAMAccountName) 
$IdentityReference = $NTAccount.Translate([System.Security.Principal.SecurityIdentifier]) 

$ACL = Get-Acl $Folder 
$AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule($IdentityReference, $AccessRights, $InheritanceFlags,$PropagationFlags,$Type) 
$ACL.AddAccessRule($AccessRule) 
Set-Acl -Path $Folder -AclObject $ACL 

} 
+0

完美的,這救了我幾個小時的咕嚕工作......我不能感謝你enuogh! – ISOcrates