Script reads DFS Location from host. Script reads ADuser from host. Script checks whether DFS location and User specified are correct. Then checks how the user have access to the folder and what NTFS rights the user has.
PS1:
#Load Active Directory modules Import-Module ActiveDirectory Clear-host $Locatie = Read-Host "Voer de DFS Locatie in in UNC Format bijvoorbeeld:\gemeentenet.localdfsdeelnemerfolder" While ((Test-Path $Locatie) -ne $true){ write-host "De opgegeven locatie bestaat niet. Voor opnieuw in" -b Black -f Red $Locatie = Read-Host "Voer de DFS Locatie in in UNC Format bijvoorbeeld:\gemeentenet.localdfsdeelnemerfolder" While ((Test-Path $Locatie) -ne $true){ [System.Windows.Forms.MessageBox]::Show("ERROR: $locatie bestaat niet. Het script is beeindigd!") write-host De $locatie bestaat niet. Voer het script opnieuw uit! -F Red If (!($psISE)){"Press any key to continue...";[void][System.Console]::ReadKey($true)}}} $User = Read-Host "Voer de User in in sAMaccountname Format bijvoorbeeld:othsbe02" $testresult = get-aduser $User If ($testresult -eq $null){ write-host "De opgegeven User bestaat niet. Voor opnieuw in" -b Black -f Red $User = Read-Host "Voer de User in in sAMaccountname Format bijvoorbeeld:othsbe02" $testresult = get-aduser $User if ($testresult -eq $null){ [System.Windows.Forms.MessageBox]::Show("ERROR: $User bestaat niet. Het script is beƫindigd!") write-host De $User bestaat niet. Voer het script opnieuw uit! -F Red If (!($psISE)){"Press any key to continue...";[void][System.Console]::ReadKey($true)}}} $Folders = @() $Folders = get-item $locatie | where {$_.psiscontainer -eq $true} $outfile = ".temp.csv" $Header = "Folder Path;IdentityReference;AccessControlType;IsInherited;InheritanceFlags;PropagationFlags;Filesystemrights" Add-Content -Value $Header -Path $OutFile 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 }} $CSVImport = import-csv $outfile -delimiter ";" $list1 = @() foreach ($item in $CSVImport){ $identity = $item.Identityreference.replace("GEMEENTENET","") if ($item -match "BUILTIN" -and $item -match "Users"){$identity = $item.Identityreference $temp1 = Get-ADGroupmember -identity "Domain Users" -recursive |ForEach-Object {$_.sAMaccountname}} if ($item -notmatch "Builtin" -and $item -notmatch "NT AUTHORITY" -and $item -notmatch "CREATOR"){ $temp1 = Get-ADGroupmember $identity -recursive |ForEach-Object {$_.sAMaccountname} } if ($item -match "BUILTINAdministrators"){$identity = $item.Identityreference.replace("BUILTIN","") $temp1 = Get-ADGroupmember $identity -recursive |ForEach-Object {$_.sAMaccountname} } foreach ($line in $temp1){$list1 += $line + ";" + $identity + ";" + $item.FileSystemRights} $result = $list1 |? {$user -contains $_}} $print = $list1 -match $user $print | sort -unique remove-item $outfile
ZIP: