Me gustaría cambiar la ACL de la unidad C:
. Lo que intento hacer es eliminar el permiso que un usuario puede crear una carpeta directamente en la unidad. Probé el script en otra carpeta mientras lo escribía. Funcionó sin problemas. Después de la finalización probé la secuencia de comandos en nuestro dominio de prueba en la unidad real. Me sale un error que no puedo entender. Si elimino el permiso manualmente, funciona sin problemas. Alguien tiene una idea?¿Por qué Set-Acl en la raíz de la unidad intenta establecer la propiedad del "objeto"?
$path = "C:\"
$colRights = [System.Security.AccessControl.FileSystemRights]"CreateDirectories"
$InheritanceFlag = [System.Security.AccessControl.InheritanceFlags]::None
$PropagationFlag = [System.Security.AccessControl.PropagationFlags]::None
$objType =[System.Security.AccessControl.AccessControlType]::Allow
$objUser = New-Object System.Security.Principal.NTAccount("Authenticated Users")
$objACE = New-Object System.Security.AccessControl.FileSystemAccessRule ($objUser, $colRights, $InheritanceFlag, $PropagationFlag, $objType)
$objACL = Get-ACL $path
$objACL.RemoveAccessRule($objACE)
Set-ACL $path $objACL
El error es:
Set-Acl : The security identifier is not allowed to be the owner of this object.
At C:\Users\mhodler\Desktop\Remove Permission.ps1:57 char:8
+ Set-ACL <<<< $path $objACL
+ CategoryInfo : InvalidOperation: (C:\:String) [Set-Acl], InvalidOperationException
+ FullyQualifiedErrorId : System.InvalidOperationException,Microsoft.PowerShell.Commands.SetAclCommand
Encontré la respuesta. Perdón por publicarlo aquí. No tengo el permiso para publicar una respuesta a mi propia pregunta en las próximas 4 horas. Reemplazar $ objACL = Get-ACL $ ruta Con $ objACL = (ítems obtener $ path) .getaccesscontrol ("Acceso") –