Ciao riccardoroma,
con -recurse ottieni
tutta l'alberatura della cartella e non solo le cartelle root, come desideri. Dovresti, invece, recuperare solo le root utilizzando un filtro sulla proprietà PSIsContainer, che indica se l'elemento ritornato da Get-ChildItem è una cartella o meno. Per verificare che la cartella "riservato" esista, poi, puoi utilizzare il cmdlet Test-Path.
Per impostare le ACL, infine, puoi utilizzare direttamente icacls.exe o cacls.exe, tool a riga di comando presenti all'interno di Windows.
Ecco un esempio di utilizzo, che assegna i diritti di Full Control all'utente ALKAID\Ikmju, rimuovendo l'ereditarietà con la cartella parent:
ls Z:\ |
? { $_.PSIsContainer } |
% {
# Recupera il nome completo della cartella da creare
$folderToCreate = [IO.Path]::Combine($_.FullName, "riservato")
# Verifica che la cartella non esista già
if (-not (Test-Path $folderToCreate)) {
# Crea la cartella
md $folderToCreate
# Reimposta i permessi tramite icacls.exe
icacls $folderToCreate /grant Alkaid\ikmju:F /inheritance:r | Out-Null
}
}
Ciao, a presto!