none
Estrazione permessi cartelle RRS feed

  • Domanda

  • Buongiorno a tutti!

    Effettuando una ricerca anche all'interno delle risorse in lingua inglese per estrarre le informazioni dei permessi di accesso alle cartelle ho trovato un piccolo script in Powershell che svolge in parte il compito che volevo.

    Lo script è

    $OutFile = "C:\USERS\adserradura\Desktop\Permissions.csv"
    $Header = "Folder Path,IdentityReference,AccessControlType,IsInherited,InheritanceFlags,PropagationFlags"
    Del $OutFile
    Add-Content -Value $Header -Path $OutFile 
    
    $RootPath = "Cartella in cui si vuol cercare"
    
    $Folders = dir $RootPath | where {$_.psiscontainer -eq $true}
    
    foreach ($Folder in $Folders){
    	$ACLs = get-acl $Folder.fullname | ForEach-Object { $_.Access  }
    	Foreach ($ACL in $ACLs){
    	$OutInfo = $Folder.FullName + "," + $ACL.IdentityReference  + "," + $ACL.AccessControlType + "," + $ACL.IsInherited + "," + $ACL.InheritanceFlags + "," + $ACL.PropagationFlags
    	Add-Content -Value $OutInfo -Path $OutFile
    	}}

    Lo script mi restituisce un bel file.csv con la lista delle cartelle e i permessi ma non si riesce a capire se per i gruppi o gli utenti inseriti nelle security della cartella l'accesso sia in sola lettura o in lettura/scrittura (o eventualmente altro ancora).

    Qualcuno saprebbe invece come reperire questa informazione tramite script? Finora ho fatto il tutto a mano e sinceramente ci metto troppo tempo quando il n di cartelle comincia a diventare alto.

    Grazie a tutti della disponibilità,

    Davide.

     
    martedì 6 marzo 2018 08:05

Risposte

  • Buongiorno a tutti!

    Effettuando una ricerca anche all'interno delle risorse in lingua inglese per estrarre le informazioni dei permessi di accesso alle cartelle ho trovato un piccolo script in Powershell che svolge in parte il compito che volevo.

    Lo script è

    $OutFile = "C:\USERS\adserradura\Desktop\Permissions.csv"
    $Header = "Folder Path,IdentityReference,AccessControlType,IsInherited,InheritanceFlags,PropagationFlags"
    Del $OutFile
    Add-Content -Value $Header -Path $OutFile 
    
    $RootPath = "Cartella in cui si vuol cercare"
    
    $Folders = dir $RootPath | where {$_.psiscontainer -eq $true}
    
    foreach ($Folder in $Folders){
    	$ACLs = get-acl $Folder.fullname | ForEach-Object { $_.Access  }
    	Foreach ($ACL in $ACLs){
    	$OutInfo = $Folder.FullName + "," + $ACL.IdentityReference  + "," + $ACL.AccessControlType + "," + $ACL.IsInherited + "," + $ACL.InheritanceFlags + "," + $ACL.PropagationFlags
    	Add-Content -Value $OutInfo -Path $OutFile
    	}}

    Lo script mi restituisce un bel file.csv con la lista delle cartelle e i permessi ma non si riesce a capire se per i gruppi o gli utenti inseriti nelle security della cartella l'accesso sia in sola lettura o in lettura/scrittura (o eventualmente altro ancora).

    Qualcuno saprebbe invece come reperire questa informazione tramite script? Finora ho fatto il tutto a mano e sinceramente ci metto troppo tempo quando il n di cartelle comincia a diventare alto.

    Grazie a tutti della disponibilità,

    Davide.

     

    The property you're looking for is $ACL.FileSystemRights.

    lo script diventa:

    $OutFile = "C:\USERS\adserradura\Desktop\Permissions.csv"
    $Header = "Folder Path,IdentityReference,AccessControlType,IsInherited,InheritanceFlags,PropagationFlags"
    Del $OutFile
    Add-Content -Value $Header -Path $OutFile 
    
    $RootPath = "Cartella in cui si vuol cercare"
    
    $Folders = dir $RootPath | where {$_.psiscontainer -eq $true}
    
    foreach ($Folder in $Folders){
    	$ACLs = get-acl $Folder.fullname | ForEach-Object { $_.Access  }
    	Foreach ($ACL in $ACLs){
    	$OutInfo = $Folder.FullName + "," + $ACL.IdentityReference  + "," + $ACL.AccessControlType + "," + $ACL.IsInherited + "," + $ACL.InheritanceFlags + "," + $ACL.PropagationFlags + "," + $ACL.FileSystemRights
    	Add-Content -Value $OutInfo -Path $OutFile
    	}}



    Edoardo Benussi
    Microsoft MVP - Cloud and Datacenter Management
    e[dot]benussi[at]outlook[dot]it

    lunedì 12 marzo 2018 15:18
    Moderatore

Tutte le risposte

  • La prospettiva di acquisto di un Tool di terze parti la lascerei come ultimissima risorsa.

    Il primo tool proposto, gratuito, è ben fatto ma va a leggere ricorsivamente tutti i file e le cartelle. 

    A me basterebbe che leggesse le security del primo livello di cartelle sottostante alla cartella indicata in "input" e che escludesse i file.

    Per quello, essendo la mia richiesta particolare, magari qualcuno potrà aiutarmi a migliorare lo script.

    Grazie mille,

    Davide.

    martedì 6 marzo 2018 11:29
  • Ho trovato questa "instruzione"/mini-script :

    Get-ChildItem .\Windows -Recurse | where-object {($_.PsIsContainer)} | Get-ACL | Format-List | Out-File C:\Permissions.txt

    Ma sinceramente non credo che possa andare per me. 

    Vorrei che lo script generasse una riga per ogni utente/gruppo di sicurezza delle cartelle e che scrivesse nella colonna successiva il valore Allow ReadAndExecute, FullControl ecc

    Questo comando mi da per ogni cartella una lista di accessi che di per se va benissimo ma vorrei che fosse su più righe per poter gestire le info con un file .csv anzichè .txt.

    Grazie mille,

    Davide.

    mercoledì 7 marzo 2018 15:02
  • Buongiorno a tutti!

    Effettuando una ricerca anche all'interno delle risorse in lingua inglese per estrarre le informazioni dei permessi di accesso alle cartelle ho trovato un piccolo script in Powershell che svolge in parte il compito che volevo.

    Lo script è

    $OutFile = "C:\USERS\adserradura\Desktop\Permissions.csv"
    $Header = "Folder Path,IdentityReference,AccessControlType,IsInherited,InheritanceFlags,PropagationFlags"
    Del $OutFile
    Add-Content -Value $Header -Path $OutFile 
    
    $RootPath = "Cartella in cui si vuol cercare"
    
    $Folders = dir $RootPath | where {$_.psiscontainer -eq $true}
    
    foreach ($Folder in $Folders){
    	$ACLs = get-acl $Folder.fullname | ForEach-Object { $_.Access  }
    	Foreach ($ACL in $ACLs){
    	$OutInfo = $Folder.FullName + "," + $ACL.IdentityReference  + "," + $ACL.AccessControlType + "," + $ACL.IsInherited + "," + $ACL.InheritanceFlags + "," + $ACL.PropagationFlags
    	Add-Content -Value $OutInfo -Path $OutFile
    	}}

    Lo script mi restituisce un bel file.csv con la lista delle cartelle e i permessi ma non si riesce a capire se per i gruppi o gli utenti inseriti nelle security della cartella l'accesso sia in sola lettura o in lettura/scrittura (o eventualmente altro ancora).

    Qualcuno saprebbe invece come reperire questa informazione tramite script? Finora ho fatto il tutto a mano e sinceramente ci metto troppo tempo quando il n di cartelle comincia a diventare alto.

    Grazie a tutti della disponibilità,

    Davide.

     

    The property you're looking for is $ACL.FileSystemRights.

    lo script diventa:

    $OutFile = "C:\USERS\adserradura\Desktop\Permissions.csv"
    $Header = "Folder Path,IdentityReference,AccessControlType,IsInherited,InheritanceFlags,PropagationFlags"
    Del $OutFile
    Add-Content -Value $Header -Path $OutFile 
    
    $RootPath = "Cartella in cui si vuol cercare"
    
    $Folders = dir $RootPath | where {$_.psiscontainer -eq $true}
    
    foreach ($Folder in $Folders){
    	$ACLs = get-acl $Folder.fullname | ForEach-Object { $_.Access  }
    	Foreach ($ACL in $ACLs){
    	$OutInfo = $Folder.FullName + "," + $ACL.IdentityReference  + "," + $ACL.AccessControlType + "," + $ACL.IsInherited + "," + $ACL.InheritanceFlags + "," + $ACL.PropagationFlags + "," + $ACL.FileSystemRights
    	Add-Content -Value $OutInfo -Path $OutFile
    	}}



    Edoardo Benussi
    Microsoft MVP - Cloud and Datacenter Management
    e[dot]benussi[at]outlook[dot]it

    lunedì 12 marzo 2018 15:18
    Moderatore