Me encontré con un problema, escribí un script que comprime archivos pdf a través de un programa y transfiere derechos a un archivo nuevo copiándolo del anterior para diferenciar el acceso a los archivos nuevos. Aquí está la parte del código que tengo es el problema.
$owner = $origFile.GetAccessControl().GetOwner([System.Security.Principal.SecurityIdentifier])
$newFile = Get-Item -Path $PathoutFile
$FileSecurity = new-object System.Security.AccessControl.FileSecurity
$FileSecurity.SetOwner($owner)
[System.IO.File]::SetAccessControl($newFile, $FileSecurity)
Get-Acl -Path $origFile | Set-Acl -Path $newFile
Mi problema es este: ejecuto el script usando privilegios de administrador de dominio, todo funciona bien. Si uso una cuenta de usuario de dominio y otorgo los derechos máximos al directorio, se guarda un archivo comprimido en él y, en este caso, aparece el error “Intento realizar una operación no autorizada. No quiero ejecutar el script con una cuenta de administrador por una sencilla razón: creo que dichos derechos son innecesarios para realizar esta operación. Estoy aprendiendo y cometiendo errores, pero quiero aprender a escribir buenos scripts y administrar de manera competente las reglas de acceso requeridas para mi trabajo, por eso les pido que me ayuden a descubrir qué debo hacer para que se asignen los derechos al usar. la secuencia de comandos. Busqué información en Google sobre este tema pero no encontré información completa. Encontré información de que no se puede prescindir de los derechos de administrador para cambiar el propietario, pero no entiendo por qué no puedo transferir los derechos a un nuevo archivo en este caso. Por favor ayúdenme a resolver este problema. Establecer el propietario del archivo antiguo al archivo nuevo es una tarea opcional. Las acciones de Ps se realizan en un recurso compartido de red y el usuario bajo el cual se ejecuta el script tiene acceso completo. La carpeta de red se encuentra en Win Serv 2008 SP2 y el script se ejecuta en Windows 10 Pro. Gracias de antemano.
Respuesta1
Yo mismo encontré una solución a mi problema principal utilizando el módulo NTFSSecurity PowerShell. La transferencia de derechos de acceso se realizó mediante Get-NTFSAccess $filein | Agregar-NTFSAccess $fileout