Your task is very easy. I guess some of suggestions (except general answer like "post your code") will contain SET-ACL cmdlet.. which I don't like much … :)
I do like using old fashioned ICACLS command, for me its very readable and understandable..
Example
$strGrant = "/grant"
$strRemove = "/remove"
$Icaclsparam1 = ":(OI)(CI)(F)"
$Icaclsparam2 = ":(OI)(CI)(IO)(F)"
$Icaclsparam3 = ":(OI)(CI)(RX,W,DC)"
$Icaclsparam4 = ":(OI)(CI)(RX)"
$Icaclsparam5 = ":(RX)"
$Icaclsparam6 = ":(CI)"
$OBJ1 = "Domain\User1"
Invoke-Expression -Command ('icacls D:\Home\Folder1 $strGrant "${OBJ1}${Icaclsparam1}"')
All u need to do is
1. get folder structure
2. create loop (get some info about powershell loops)
3. paste your scriptblock which will modify permissions for each folder.