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 shares
Aqui 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