Les droits d'un partage qui héberge les profils ou homefolder des utilisateurs peuvent se corrompent ou peuvent avoir besoin dêtre réinitialisés. Ce script powershell prépare un fichier bat qui peut donc être contrôlé avant lancement. Il prépare une série de commande pour chaque sous-répertoire dun partage. On considère que chaque sous répertoire correspond au login dun utilisateur. Le script se basera sur le nom de ce répertoire pour donner les droits au login correspondant. Les administrateurs auront le plein accès et lutilisateur se verra donné les droits de propriétaire.
$MyLine = [string]
$PathToProcess = [string]
$PathFolderForCACLS = [string]
$CheminFichier = [string]
$AdministratorLogin = [string]
$AdministratorLogin = "Administrators"
$PathToProcess = "C:\Chemin à traiter"
$NomFichier = "BatCACLS.bat"
$RepertoireFichier = "C:\Repertoire pour ecrire le BAT resultant"
$CheminFichier = "$RepertoireFichier\$NomFichier"
Write-Host $CheminFichier
$MonFichier = New-Item -type file $CheminFichier -Force
$MonFolder = Get-ChildItem -Path $PathToProcess | Where-Object {$_.PSIsContainer}
foreach ($MySubFolder in $MonFolder)
{
$PathFolderForCACLS = "`""+$PathToProcess+"\"+$MySubFolder.name+"`""
$MyLine = "TAKEOWN /F $PathFolderForCACLS /a /r /d Y"
add-content $MonFichier $MyLine
$MyLine = "iCACLS $PathFolderForCACLS /reset /T /C /Q"
add-content $MonFichier $MyLine
$MyLine = "iCACLS $PathFolderForCACLS /Grant `""+$MySubFolder.name+"`":(OI)(CI)F /C /Q"
add-content $MonFichier $MyLine
$MyLine = "iCACLS $PathFolderForCACLS /setowner `""+$MySubFolder.name+"`" /T /C /Q"
add-content $MonFichier $MyLine
}
Lien vers le fichier : cliquez ici
Le même script à placer à la racine du répertoire à traiter.
Une ligne commentée en REM permet d'ajouter un compte supplémentaire avec tous les droits.
Normalement ce n'est pas nécessaire si l'héritage est bien fait.
Clear-Host
$MyLine = [string]
$PathToProcess = [string]
$PathFolderForCACLS = [string]
$CheminFichier = [string]
$AdministratorLogin = [string]
$AdministratorLogin = "Administrators"
function Get-ScriptDirectory
{
$Invocation = (Get-Variable MyInvocation -Scope 1).Value
$ScriptFolderPath = Split-Path $Invocation.MyCommand.Path
return $ScriptFolderPath
}
#$PathToProcess = "C:\Chemin à traiter"
$PathToProcess = Get-ScriptDirectory
$NomFichier = "BatReinitDroits.bat"
#$RepertoireFichier = "C:\Repertoire pour ecrire le BAT resultant"
$RepertoireFichier = Get-ScriptDirectory
$CheminFichier = "$RepertoireFichier\$NomFichier"
Write-Host $CheminFichier
$MonFichier = New-Item -type file $CheminFichier -Force
$MonFolder = Get-ChildItem -Path $PathToProcess | Where-Object {$_.PSIsContainer}
foreach ($MySubFolder in $MonFolder)
{
$PathFolderForCACLS = "`""+$PathToProcess+"\"+$MySubFolder.name+"`""
$MyLine = "TAKEOWN /F $PathFolderForCACLS /a /r /d Y"
add-content $MonFichier $MyLine
$MyLine = "iCACLS $PathFolderForCACLS /reset /T /C /Q"
add-content $MonFichier $MyLine
$MyLine = "iCACLS $PathFolderForCACLS /Grant `""+$MySubFolder.name+"`":(OI)(CI)F /C /Q"
add-content $MonFichier $MyLine
$MyLine = "REM iCACLS $PathFolderForCACLS /Grant `""+$AdministratorLogin+"`":(OI)(CI)F /C /Q"
add-content $MonFichier $MyLine
$MyLine = "iCACLS $PathFolderForCACLS /setowner `""+$MySubFolder.name+"`" /T /C /Q"
add-content $MonFichier $MyLine
}
Lien vers le fichier : cliquez ici
Pages Web
Site Web | Description |
---|---|
ss64.com | Site avec explication par exemple sur iCacls |