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.
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!