Question Aide création script acl dossiers spécifiques

Plus d'informations
il y a 1 an 5 mois #32778 par Jeantet François-Louis
Bonjour, 
Je suis en train d'écrire un de mes premiers scrips qui me sont demandés pour ma formation cependant je suis un peu perdu (on m'a pas trop donnés d'informations sur la rédaction de scripts et je sèche pas mal). 
En effet, je sais comment faire pour donner des droits, récupérer des droits à un dossier... cependant, je dois faire quelque chose de particulier à savoir créer un script nécessitant toutes ces données: Un dossier partagé de type c:\clients est disponible à tout le monde. Ce dossier comprends un dossier par client qui lui même contient 6 dossiers ayant toujours la même dénomination qu'importe les clients (Dossier1, Dossier2, Dossier3, Dossier4, Dosssier5 et Dossier6). Les accès doivent être donnés en lecture uniquement pour les dossier 2 / 3 et 5 à certains utilisateurs et les autres dossiers ne doivent pas être visibles par ces même utilisateurs. 
Cette règle doit s'appliquer sur chaque dossier du dossier c:\clients. 
J'ai donc décidé de déclarer ma variable acl ($acl = Get-Acl c:\clients\) et c'est là que ça coince... Je pensais pouvoir mettre une étoile pour déclarer "peut importe le dossier" :$acl = Get-Acl c:\clients\*\Dossier2 cependant ça ne fonctionne pas... Comment puis-je faire pour indiquer que peut importe le dossier se trouvant sous le dossier clients, l'acl doit être effectuée sur le Dossier 2 ( puis remettre une valeur acl1 et acl2 pour les dossier 3 et 5 ensuite)? 

Merci de me venir en aide car, là je bloque un peu malheureusement... 

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 1 an 5 mois #32802 par Jeantet François-Louis
Pour info et pour ceux qui rechercheraient une réponse voici le script que j'ai fait si ça peut aider: 
$Data1=Get-ChildItem C:\Users\Administrateur\Software\Clients\ -Recurse | Where-Object -Property Name -Contains 'Direct' | Get-Acl
$Data2=Get-ChildItem C:\Users\Administrateur\Software\Clients\ -Recurse | Where-Object -Property Name -Contains 'DSS' | Get-Acl
$Data3=Get-ChildItem C:\Users\Administrateur\Software\Clients\ -Recurse | Where-Object -Property Name -Contains 'Flux' | Get-Acl

#Permet de désactiver l'héritage des autorisations du dossier:

$NewAcl=$Data1 
$NewAcl.SetAccessRuleProtection($true,$true)
$NewAcl | Set-Acl

#Permet de donner les autorisations pour le groupe: 

$Acl=$Data1
$rule=New-Object System.Security.AccessControl.FileSystemAccessRule("Accès Fichiers","InheritOnly","Read","Allow") 
$Acl.addAccessrule($rule)
$Acl | Set-Acl

#Copier les autorisations sur les autres dossiers: 

$NewAcl=$Data2 
$NewAcl.SetAccessRuleProtection($true,$true)
$NewAcl | Set-Acl

#Permet de donner les autorisations pour le groupe: 

$Acl=$Data2
$rule=New-Object System.Security.AccessControl.FileSystemAccessRule("Accès Fichiers","InheritOnly","Read","Allow") 
$Acl.addAccessrule($rule)

$Acl | Set-Acl

$NewAcl=$Data3 
$NewAcl.SetAccessRuleProtection($true,$true)
$NewAcl | Set-Acl

#Permet de donner les autorisations pour le groupe: 

$Acl=$Data3
$rule=New-Object System.Security.AccessControl.FileSystemAccessRule("Accès Fichiers","InheritOnly","Read","Allow") 
$Acl.addAccessrule($rule)
$Acl | Set-Acl

Je mets cela en résolu, bien que j'ai encore une erreur concernant l'héritage des sous dossiers et fichiers de chaque dossiers appelés par $data1, $data2 et $data3 si jamais quelqu'un aurait une solution...

Message d'erreur: 
New-Object : Surcharge introuvable pour « FileSystemAccessRule » et le nombre d'arguments « 4 ».
Au caractère C:\Users\Administrateur\Documents\Bon Script.ps1:14 : 7
+ $rule=New-Object System.Security.AccessControl.FileSystemAccessRule(" ...
+       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation : (:) [New-Object], MethodException
    + FullyQualifiedErrorId : ConstructorInvokedThrowException,Microsoft.PowerShell.Commands.NewObjectCommand
 
New-Object : Surcharge introuvable pour « FileSystemAccessRule » et le nombre d'arguments « 4 ».
Au caractère C:\Users\Administrateur\Documents\Bon Script.ps1:27 : 7
+ $rule=New-Object System.Security.AccessControl.FileSystemAccessRule(" ...
+       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation : (:) [New-Object], MethodException
    + FullyQualifiedErrorId : ConstructorInvokedThrowException,Microsoft.PowerShell.Commands.NewObjectCommand
 
New-Object : Surcharge introuvable pour « FileSystemAccessRule » et le nombre d'arguments « 4 ».
Au caractère C:\Users\Administrateur\Documents\Bon Script.ps1:39 : 7
+ $rule=New-Object System.Security.AccessControl.FileSystemAccessRule(" ...
+       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation : (:) [New-Object], MethodException
    + FullyQualifiedErrorId : ConstructorInvokedThrowException,Microsoft.PowerShell.Commands.NewObjectCommand

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 1 an 5 mois - il y a 1 an 5 mois #32805 par Laurent Dardenne
Salut,
Pour le message :
New-Object : Surcharge introuvable pour « FileSystemAccessRule » et le nombre d'arguments « 4 ».

La syntaxe de la ligne suivante est erronée :
$rule=New-Object System.Security.AccessControl.FileSystemAccessRule("Accès Fichiers","InheritOnly","Read","Allow") 
New-Object est un cmdlet pas une méthode, utilise le paramètre -ArgumentList pour les passer au constructeur. Là tu passes un tableau d'objet sur le premier paramètre.
Ensuite :
$rule=New-Object System.Security.AccessControl.FileSystemAccessRule -ArgumentList "Accès Fichiers","InheritOnly","Read","Allow"

renvoie la même erreur c'est à priori le type d'un des paramètre qui pose problème ou encore le constructeur avec 4 paramètres qui n'existe pas ( le message d'erreur d'origine). Il faut donc lire la doc de la classe FileSystemAccessRule.

Tu peux aussi lister ses constructeurs :
[System.Security.AccessControl.FileSystemAccessRule]::new

Tutoriels PowerShell
Dernière édition: il y a 1 an 5 mois par Laurent Dardenne. Raison: balise

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.070 secondes
Propulsé par Kunena