Você pode usar seus familiares comandos icacls
com o loop do PowerShell como uma "introdução" ao PowerShell.
Algo como isso deve acontecer
Get-Content C:\users.txt | ForEach-Object {
$User = $_
$WorkingPath = "M:\" + "$User"
mkdir $WorkingPath
icacls $WorkingPath /grant $User:(OI)(CI)M
$Public = "$WorkingPath" + "public"
mkdir $Public
icacls $Public /inheritance:d
icacls $Public / All:(OI)(CI)(RD)
icacls $Public /grant All:(OI)(CI)R
$Private = "$WorkingPath" + "private"
mkdir $Private
icacls $Private /inheritance:d
icacls $Private /remove All
}
Há Get-ACL
e Set-ACL
para trabalhar com permissões no PowerShell, além de substituições de mkdir
e comandos semelhantes, mas dessa forma você pode facilitar usá-lo.