Mapear unidad de red script powershell

Cómo mapear una unidad de red mediante script de PowerShell

Compartir

Acompáñanos en este pequeño artículo en el que hablaremos acerca de cómo mapear una unidad de red mediante script de PowerShell, siendo esta en realidad una unidad personal.

 

¿Cómo mapear una unidad de red mediante script de PowerShell?

El script que vamos a construir, en realidad es un script muy sencillito para todo lo que podríamos hacer, pero como siempre, el propósito es daros unas pinceladas a partir de las cuales podáis desarrollar vosotros scripts adaptados a vuestras necesidades.

En este caso vamos a trabajar con un pequeño script que toma como punto de partida el comando “New-PSDrive”, que usará para mapear una nueva unidad que previamente se haya compartido. Como en este caso estamos cargando una unidad personal para cada usuario, pasaremos el usuario como una variable de entorno.

Al pasar el usuario como una variable de entorno, el sistema lanzará una consulta de quién es el usuario que está en la sesión, cargando de manera automática el recurso para cualquier usuario que esté validado y tenga recurso creado, o sea, que tenga una unidad asignada, pueda recibir el acceso.

NOTA: Tal como acabamos de decir, nosotros crearemos un recurso y en ese recurso crearemos distintas carpetas con los nombres de los usuarios a los que se les va a permitir tener su propia unidad personal. Aquellos que no tengan creada esa carpeta, si intentan ejecutar el script, recibirán un mensaje de error de ejecución por no tener recurso disponible; o sea, que no se puede ejecutar porque no tienen carpeta asignada.

El comando para ejecutar podría ser algo similar a esto:

New-PSDrive -Name «<Nombre_Unidad>» -PSProvider FileSystem -Root «<Ruta_Unidad_Compartida>» -Persist

 

Donde:

  • Name «<Nombre_Unidad>»: Indica el nombre de la unidad con el que se va a mapear el recurso. En este caso usamos “X” pero una buena práctica sería usar “P” para hacer referencia a “Personal”.
  • -PSProvider FileSystem: Indica que estamos cargando un recurso de tipo sistema de ficheros.
  • -Root «<Ruta_Unidad_Compartida>«: Es básicamente el recurso mapeado y que debe terminar con el nombre del usuario para que de esta manera se cambie automáticamente en función del usuario que cargue el script.
  • -Persist: Indica que el recurso es remanente a reinicios, o sea, que cuando el equipo se apague y vuelva a encender se seguirá teniendo acceso a la unidad.

Un ejemplo de este recurso «<Ruta_Unidad_Compartida>» podría ser:

\\SRV-OLIN02-031\SMB2022Nacho\administrador\

Un ejemplo de esto, entonces, podría ser:

New-PSDrive -Name «x» -PSProvider FileSystem -Root \\SRV-OLIN02-031\SMB2022Nacho\administrador\ -Persist

 

Mejorando el script de PowerShell para el mapeo de unidades personales:

El problema de hacerlo de esta manera es que sólo será válido para el usuario “administrador” o tendremos que cambiar el final de \\SRV-OLIN02-031\SMB2022Nacho\ para cada ejecución.

Para solventar esto, se podrían usar variables de entorno de la siguiente manera:

$VARNAME=$env:UserName

New-PSDrive -Name «x» -PSProvider FileSystem -Root «\\SRV-OLIN02-031\SMB2022Nacho\$VARNAME» -Persist

 

Donde, como podemos ver, hay dos cambios:

  • Primer cambio, se añade la variable $VARNAME que pregunta al sistema cual es el usuario.
  • Segundo cambio, la ruta mapeada, ahora añade esa nueva variable («\\SRV-OLIN02-031\SMB2022Nacho\$VARNAME») con lo que tenemos que tocar menos dentro del código.

Personalmente, le daría una vuelta más, y es el incluir esta nueva forma:

$UNITNAME=»\\SRV-OLIN02-031\SMB2022Nacho\$VARNAME»

$VARNAME=$env:UserName

New-PSDrive -Name «x» -PSProvider FileSystem -Root «$UNITNAME» -Persist

 

Donde añadimos un tercer cambio, que es una nueva variable que tiene la ruta más el nombre de usuario.

Esto hará que podamos hacer cambios de manera más rápida, sin toquetear el código, cambiando únicamente las variables. Esto quizá no sea importante en este script ahora mismo ya que es muy pequeño, pero tomará importancia vital conforme vaya creciendo.

Imagen. Ejecución del script PowerShell para el mapeo de unidades personales en ISE
Imagen. Ejecución del script PowerShell para el mapeo de unidades personales en ISE

A partir de aquí tendríamos un script básico con el que podríamos operar perfectamente, o podríamos seguir desarrollando, aumentando la complejidad y las prestaciones.

 

Conclusiones

Como puedes ver, a lo largo de este artículo, cómo mapear una unidad de red mediante script de PowerShell, hemos descrito como podemos crear un pequeño pedazo de código, realmente simple, pero tremendamente potente con el que conectar a una unidad compartida, y que, en este caso, se mapea en función del nombre de usuario con el que hayamos conectado, o sea, que no conectará al mismo sitio si conectamos con el usuario “jioller” que si conectamos con el usuario “nacho”.

Cómo viene siendo habitual, este artículo sienta las bases del script y da algunas pautas, pero las posibilidades, que se dejan al lector, son infinitas.

La ejecución es sencilla y debería estar soportada por todos los sistemas Microsoft Windows actuales ya que son cmdlets básicos de PowerShell, pero si encontraras algún problema en su ejecución puedes contactar con nosotros para que intentemos echarte una mano.

Si quieres aprender otros scripts y trucos de PowerShell puedes echar un ojo a nuestro blog.

¡Gracias por leernos!

Categorías:Recursos Sysadmin

Otros posts que te pueden interesar

29 de abril de 2024
Quédate con nosotros y descubre las 5 principales causas de la pérdida de datos en las pyme españolas y
23 de abril de 2024
Acompáñanos en este artículo en el que trataremos de ver cómo evaluar riesgos y amenazas en la pyme. Uno
20 de febrero de 2024
Acompáñanos en este artículo en el que trataremos uno de esos “pains” a los que se enfrenta toda pyme,

Rellena el formulario y nuestro equipo de Sales contactará contigo lo antes posible.

growth@jotelulu.com  |  +34 911 333 712  |  jotelulu.com 

Puedes darte de baja de estas comunicaciones en cualquier momento.  Consulta nuestra Política de privacidad.