none
Script per estrazione permessi utente

    Discussione generale

  • Ciao, 

    Sicuramente è già stato discusso l'argomento e sono state date diverse soluzioni. Questa è la mia versione, semplificata e personalizzata alle mie (aziendali) esigenze che, forse, potrà fare comodo anche ad altri in futuro.

    Lo script estrae i permessi utente per ogni sottocartella di una cartella il cui Path viene digitato in input da tastiera.

    Si potrebbe aggiungere l'opzione di ricorsività ma appesantirebbe di molto l'esecuzione.

    echo = "Inserire il Path:"
    $RootPath = Read-Host
    $Date = Get-Date -Format HH-mm_dd-MM-yyyy
    $Outfile = "C:\Users\adserradura\Desktop\Permessi_"+$DATE+".csv"
    $Header = "FolderPath,IdentityReference,AccessControlType,FilesystemRights"
    $Folders = Get-ChildItem -Path $RootPath | Where-Object -FilterScript {($_.psiscontainer)}
    
    Add-Content -Value $Header -Path $Outfile
    
    Foreach ($Folder in $Folders){
        $ACLs = get-acl $Folder.fullname | ForEach-Object { $_.Access  }
        Foreach ($ACL in $ACLs){
            $ACLAccess = (Get-Acl $Folder.FullName).Access
            $FolderACL = $ACLAccess | Select-Object -ExpandProperty IdentityReference
            Foreach($FolderACL in $ACL){
                $OutInfo = $Folder.FullName + "," + $ACL.IdentityReference + ","+ $ACL.AccessControlType + "," + $FolderACL.FileSystemRights 
                Add-Content -Value $OutInfo  -Path $Outfile
               }
           }
       }

    Rapido e pulito.

    Ciao!

    *Ovviamente la variabile $Outfile va inizializzata secondo le proprie esigenze!
    martedì 13 marzo 2018 15:05

Tutte le risposte

  • Ciao Davide, grazie per aver postato sul forum. Sicuramente lo script sarà utile a qualcuno.

    Saluti
    Nino


    www.testerlab.it

    martedì 13 marzo 2018 21:18
    Moderatore
  • 	$RootPath = read-host -prompt "Inserire il Path:"
    	$Date = Get-Date -Format HH-mm_dd-MM-yyyy
    	$Outfile = "$env:userprofile\Desktop\PPermessi_$DATE.csv"
    	$Header  = "FolderPath,IdentityReference,AccessControlType,FilesystemRights"
    	$Folders = Get-ChildItem -Path $RootPath | Where-Object {$_.psiscontainer}
        #$folders | select fullname, Name, @{name="ACL";expression={ (Get-Acl $Folder.FullName).Access |% {"$($_.IdentityReference);$($_.AccessControlType);$($_.FileSystemRights)"} }}
    	Add-Content -Value $Header -Path $Outfile	 
    	Foreach ($Folder in $Folders){
    		(Get-Acl $Folder.FullName).Access |
    		ForEach-Object {
    			$Outinfo="$($Folder.FullName),$($_.IdentityReference),$($_.AccessControlType),$($_.FileSystemRights)"
    			Add-Content -Value $OutInfo  -Path $Outfile
    		}
    	}

    c'era qualche involuzione aggiuntiva, un po' ridondante, che ho tolto

    ciao Gas


    Gastone Canali >http://www.armadillo.it


    Se alcuni post rispondono al tuo quesito(non necessariamente i miei), ricorda di contrassegnarli come risposta e non dimenticare di contrassegnare anche i post utili. GRAZIE! Ricorda di dare un occhio ai link Click Here andHere


    mercoledì 14 marzo 2018 12:51
    Moderatore