2016-08-23 1 views
0

J'essaie d'utiliser powershell pour créer des répertoires de base pour les utilisateurs ainsi que de définir les autorisations pour eux en conséquence.Powershell Set Autorisations sur le répertoire personnel

Je semble continuer à courir dans ce problème où je suis incapable de définir les autorisations. Je reçois cette erreur:

Exception calling "AddAccessRule" with "1" argument(s): "Some or all identity references could not be translated." At line:1 char:1 + $permissions.AddAccessRule($userpermissions) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : IdentityNotMappedException

Voici la section du code:

$UserDir = [string]::Format("{0}\{1}", $HomeDirRoot, $user["UserName"]) 
$Account = [string]::Format("{0}\{1}", "Domain", $user["UserName"]) 

#Create Directory 
New-Item -ItemType directory -Path $UserDir |Out-Null 

# assign file permissions 

$FileSystemAccessRights=[System.Security.AccessControl.FileSystemRights]"FullControl" 
$InheritanceFlags=[System.Security.AccessControl.InheritanceFlags]::"ContainerInherit", "ObjectInherit" 
$PropagationFlags=[System.Security.AccessControl.PropagationFlags]::None 
$AccessControl=[System.Security.AccessControl.AccessControlType]::Allow 

$NewAccessrule = New-Object System.Security.AccessControl.FileSystemAccessRule ` ($Account, $FileSystemAccessRights, $InheritanceFlags, $PropagationFlags, $AccessControl) 
$CurrentACL=Get-ACL -path $UserDir 
$CurrentACL.SetAccessRule($NewAccessrule) 
Set-ACL -path $UserDir -AclObject $CurrentACL 

J'ai essayé plusieurs variantes de ce code et encore jusqu'à la fin avec la même erreur. J'ai même suis aussi loin que simplement récupérer l'objet ACL, puis l'utiliser pour définir les autorisations comme ci-dessous:

$folder = "\\fs\home\SAMACCOUNTNAMEHERE" 
$permissions = Get-Acl $folder 
Set-Acl $folder $permissions 

Je suis un peu perdu. Parce que le code fonctionne sur des dossiers sur ma machine mais quand j'essaye de l'exécuter sur un dossier comme ci-dessus il explose avec l'erreur relative aux références d'identité.

Toute suggestion appréciée.

Répondre

0

Vous codez ci-dessus fonctionne très bien, l'erreur que vous obtenez est en baisse au nom d'utilisateur que vous donnez. Cette erreur signifie que le nom d'utilisateur n'est pas reconnu par le répertoire actif ou votre machine locale. Vérifiez donc si votre variable $account produit ce que vous pensez qu'il est et que le compte est présent dans le répertoire actif ou sur la machine locale.

$Account | Write-Host  
+0

J'ai essayé cela. J'ai même codé en dur la variable de compte. Des idées sur ce qui pourrait empêcher un utilisateur de se faire reconnaître? Est-ce que l'exécution de ce code sur une autre machine (d'où le dossier existe) peut faire la différence? – MogulBomb

+0

@NLarkin Le compte est-il votre connexion à un compte local ou dans AD? Et la machine est-elle liée au domaine? Avez-vous essayé d'utiliser 'Invoke-Command' pour exécuter la commande à distance sur la machine? – Richard