Es posible que necesites migrar recursos compartidos de un servidor a otro porque se ha quedado corto de espacio.
Es posible que durante la migración quieras dejar compartidos los shares antiguos como solo lectura y es posible que se trate de tal numero de shares que necesites encontrar la manera de automatizarlo.
Con la utilidad RMTSHARE (disponible en el Resource Kit de NT4) y un poco de Powershell podemos automatizar el proceso.
Vamos a dar por hecho que tenemos un listado con los shares a modificar
Como es un comando de linea de comandos y no un cmdlet, el recuperar el dato concreto de permisos es bastante artesanal.
Es posible que durante la migración quieras dejar compartidos los shares antiguos como solo lectura y es posible que se trate de tal numero de shares que necesites encontrar la manera de automatizarlo.
Con la utilidad RMTSHARE (disponible en el Resource Kit de NT4) y un poco de Powershell podemos automatizar el proceso.
Vamos a dar por hecho que tenemos un listado con los shares a modificar
$servidor="AE1345" $shares=get-content("shares.txt")Recorremos todos los shares y recogemos el listado de permisos actual para cada share.
foreach ($share in $shares) { write-host $share #recogemos los permisos actuales $val=rmtshare \\$servidor\$share #sigue...
Como es un comando de linea de comandos y no un cmdlet, el recuperar el dato concreto de permisos es bastante artesanal.
$count=0 foreach ($v in $val){if ($v -eq "Permissions:"){break}else{$count++}} #posicion de Permissions,5 for ($i=-2;$val[$i] -ne $val[$count];$i--) #-1 = The command completed successfully { $campo=$val[$i].split(":") $perm=$campo[0].trim() write-host "$($val[$i]) -> $perm" #sigue...Es decir, la linea The command completed successfully es la -1 asi que recorremos hacia arriba la -2, -3, -4 etc hasta llegar a la linea Permissions y para cada una de esas lineas volvemos a ejecutar rmtshare con el parametro /GRANT <usuario>:READ para establecer permisos de lectura para el usuario/grupo que hemos recuperado con el comando anterior.
#cambio los permisos del share a solo lectura rmtshare \\$servidor\$share /GRANT "$perm":READ }#fin de listado de permisos por share }#fin foreach sharesAqui esta el Script completo:
$servidor="AE1345" $shares="Compras","Sistemas","Finanzas","Desarrollo","Direccion" foreach ($share in $shares) { write-host $share #recogemos los permisos actuales $val=rmtshare \\$servidor\$share $count=0 foreach ($v in $val){if ($v -eq "Permissions:"){break}else{$count++}} #posicion de Permissions,5 for ($i=-2;$val[$i] -ne $val[$count];$i--) #-1 = The command completed successfully { $campo=$val[$i].split(":") $perm=$campo[0].trim() write-host "$($val[$i]) -> $perm" #cambio los permisos del share a solo lectura rmtshare \\$servidor\$share /GRANT "$perm":READ }#fin de listado de permisos por share }#fin foreach shares
Comentarios
Publicar un comentario