Obtenga unidades asignadas para todos los usuarios en PowerShell [4 formas]
Usando el comando net use
Utilice el comando net use para obtener unidades asignadas para todos los usuarios en PowerShell.
Utilice el comando net use:
net usePRODUCCIÓN :
New connections will be remembered.
Status Local Remote Network
------------------------------------------------------------------------------
OK K: \\DESKTOP-NKK10JM\JavaProject Microsoft Windows Network
OK Z: \\DESKTOP-NKK10JM\Share Microsoft Windows Network
The command completed successfully.En el ejemplo anterior, utilizamos el comando net use para enumerar todas las unidades asignadas para todos los usuarios en la máquina local. Ambas letras de unidad (K: y Z:) se asignaron al mismo usuario.
Asignemos otra unidad a un usuario diferente y luego ejecutemos el comando net use nuevamente para ver si también se muestra la unidad asignada recientemente. Vea el siguiente ejemplo.
Utilice el comando net use:
net use M: \\DESKTOP-NKK10JM\AnotherFolder
net usePRODUCCIÓN :
New connections will be remembered.
Status Local Remote Network
------------------------------------------------------------------------------
OK K: \\DESKTOP-NKK10JM\JavaProject Microsoft Windows Network
OK M: \\DESKTOP-NKK10JM\AnotherFolder Microsoft Windows Network
OK Z: \\DESKTOP-NKK10JM\Share Microsoft Windows Network
The command completed successfully.Primero, especificamos la letra de la unidad (M:) a la que queríamos asignar la unidad de red, seguida de la ruta UNC del recurso que queríamos compartir. Recuerde, podemos usar cualquier letra para mapear la unidad de red; se haría con éxito si no se hubiera utilizado ya. No olvide incluir el archivo compartido entre comillas si contiene espacios, como \\DESKTOP-NKK10J\"Another Folder".
Si no quiere tener problemas con el dispositivo al que asignar una unidad, puede usar el asterisco para un dispositivo (aquí, dispositivo significa la letra de unidad ).
Utilice * en lugar de letra de unidad:
net use * \\DESKTOP-NKK10JM\Share
net usePRODUCCIÓN :
Drive Y: is now connected to \\DESKTOP-NKK10JM\Share.
The command completed successfully.
New connections will be remembered.
Status Local Remote Network
------------------------------------------------------------------------------
OK K: \\DESKTOP-NKK10JM\JavaProject Microsoft Windows Network
OK M: \\DESKTOP-NKK10JM\AnotherFolder Microsoft Windows Network
OK Y: \\DESKTOP-NKK10JM\Share Microsoft Windows Network
OK Z: \\DESKTOP-NKK10JM\Share Microsoft Windows Network
The command completed successfully.Usando *, le dijimos a Windows que buscara y asignara el siguiente dispositivo disponible (letra de unidad). Vea el resultado anterior; también informó que la unidad Y: estaba conectada a \\DESKTOP-NKK10JM\Share.
Hasta ahora, usábamos net use para autenticar las unidades asignadas como usuarios conectados. ¿Qué sucede si queremos autenticarnos en el recurso compartido mediante credenciales alternativas, es decir, con un nombre de usuario y contraseña específicos? ¿O qué pasa si vamos a crear una conexión sin dispositivo (sin letra de unidad)? ¿Podrá el comando net use recuperar estas unidades? Encontrémoslo en el siguiente ejemplo.
Utilice el comando net use:
net use \\DESKTOP-NKK10JM\"Script Files" /u:Domain\Mehvish 12345
net use
PRODUCCIÓN :
New connections will be remembered.
Status Local Remote Network
------------------------------------------------------------------------------
OK K: \\DESKTOP-NKK10JM\JavaProject Microsoft Windows Network
OK M: \\DESKTOP-NKK10JM\AnotherFolder Microsoft Windows Network
OK Y: \\DESKTOP-NKK10JM\Share Microsoft Windows Network
OK Z: \\DESKTOP-NKK10JM\Share Microsoft Windows Network
OK \\DESKTOP-NKK10JM\Script Files Microsoft Windows Network
The command completed successfully.En el ejemplo anterior, utilizamos el parámetro /u para especificar el nombre de usuario (Mehvish) seguido de la contraseña (12345) para la autenticación y lo hicimos. no menciono la letra de la unidad, pero el comando net use también enumeró esta unidad asignada; por lo tanto, net use puede recuperar las unidades asignadas para todos los usuarios, ya sea que no tengan dispositivo o no, o que estén autenticados o no.
No solo podemos crear o ver unidades asignadas para todos los usuarios, sino que también podemos eliminarlas. Ejecute el comando
net use /?para ver todas las opciones que se pueden usar con este comando.
¿Es posible recuperar ciertas propiedades de las unidades asignadas? Sí, lo es; Continúe con nosotros para explorarlos a continuación.
Uso de cmdlets Get-WmiObject/Get-CimInstace
Utilice el cmdlet Get-WmiObject para obtener propiedades específicas para todas las unidades asignadas para todos los usuarios en PowerShell. Se prefiere esta solución si utiliza cualquier versión de PowerShell anterior a la 3.0.
Utilice el cmdlet Get-WmiObject:
Get-WmiObject -Class Win32_MappedLogicalDisk |
Select-Object Name, CompressedPRODUCCIÓN :
Name Compressed
---- ----------
K: False
M: False
Y: False
Z: FalseEl cmdlet Get-WmiObject se utiliza para obtener instancias de clases WMI (Instrumental de administración de Windows) o detalles sobre las clases disponibles. Usamos este cmdlet con la clase Win32_MappedLogicalDisk para recuperar sus instancias y acceder a todas las propiedades asociadas con cada unidad asignada.
Estas propiedades incluyen DeviceID, ProviderName, SessionID, FileSystem, Name y Comprimido. Especificamos la clase Win32_MappedLogicalDis usando el parámetro -Class, que también podemos omitir, pero el uso de este parámetro hizo que el código fuera fácil de entender.
Luego, canalizamos la salida del cmdlet Get-WmiObject al cmdlet Select-Object, que se utiliza para seleccionar objetos o las propiedades del objeto especificadas. Usamos el cmdlet Select-Object para elegir las propiedades Name y Compressed de cada objeto. Name mostró la letra de la unidad, mientras que Compressed mostró valores booleanos (True: la unidad está comprimida, False: unidad no está comprimido).
También podemos usar el alias de
Get-WmiObjectreemplazándolo congwmi.
Utilice el cmdlet Get-CimInstance para obtener propiedades específicas para todas las unidades asignadas para todos los usuarios en PowerShell. Si está utilizando PowerShell 3.0 o superior, puede continuar con esta solución como alternativa al uso del cmdlet Get-WmiObject porque Get-WmiObject ha sido reemplazado por < cmdletGet-CimInstance desde PowerShell 3.0.
Utilice el cmdlet Get-CimInstance:
Get-CimInstance -Class Win32_MappedLogicalDisk |
Select-Object Name, CompressedPRODUCCIÓN :
Name Compressed
---- ----------
K: False
M: False
Y: False
Z: FalseEl cmdlet Get-CimInstance produjo los mismos resultados que obtuvimos en el ejemplo anterior; este cmdlet recupera las instancias CIM (modelo de información común) de la clase de un servidor CIM. Recuerde, solo podemos usar el cmdlet Get-CimInstance en plataformas Windows.
Obtuvimos una línea vacía al final del resultado producido por
Get-WmiObjectyGet-CimInstanceporque estos cmdlets no mostraban ningún detalle sobre la conexión sin dispositivo que que creamos previamente para el usuario llamadoMehvish; vea el último ejemplo en Usar el comando net use. Estas conexiones sin dispositivo ni siquiera son visibles enExplorador de archivos.
Usando el comando Get-SmbMapping
Utilice el cmdlet Get-SmbMapping para obtener propiedades específicas para todas las unidades asignadas para todos los usuarios en PowerShell.
Utilice el cmdlet Get-SmbMapping:
Get-SmbMapping |
Select-Object LocalPath, RemotePath, StatusPRODUCCIÓN :
LocalPath RemotePath Status
--------- ---------- ------
Z: \\DESKTOP-NKK10JM\Share OK
K: \\DESKTOP-NKK10JM\JavaProject OK
M: \\DESKTOP-NKK10JM\AnotherFolder OK
Y: \\DESKTOP-NKK10JM\Share OK
\\DESKTOP-NKK10JM\Script Files DisconnectedEl cmdlet Get-SmbMapping se utiliza para obtener las asignaciones del directorio del cliente del bloque de mensajes del servidor (SMB) realizadas para el servidor. Usamos este cmdlet para recuperar la lista de asignaciones SMB y sus propiedades asociadas para cada unidad asignada en particular.
Luego, canalizamos la salida del cmdlet Get-SmbMapping al cmdlet Select-Object para seleccionar LocalPath, RemotePath y Status para todas las unidades asignadas, incluida la conexión sin dispositivo.
En el resultado anterior, LocalPath mostró la ruta local, que se usó para asignar la ruta remota en esta computadora (esta computadora significa dónde ejecutó el comando). RemotePath muestra la ruta a la que se accede desde esta computadora. Finalmente, la propiedad Status indica si está conectado. Veríamos el estado OK si estuviera conectado; de lo contrario, Desconectado.
Las unidades asignadas no son persistentes de forma predeterminada; tienes que hacerlos persistentes si quieres; ¿cómo? Establezca el parámetro
/persistentenyesusando el comandonet use. Configurar/persistent:yesgarantiza que la conexión permanezca incluso después del reinicio.Otro punto digno de mención es que Windows recuerda la configuración persistente de la última conexión creada. Si configura
/persistentenyespara una conexión, todas las conexiones posteriores serán persistentes hasta que establezca/persistentennocomo/persistent:no.¿Se pregunta cómo hacer persistentes todas las conexiones creadas anteriormente? Podemos usar el comando
net usecomonet use /persistent:yespara hacer que todas las conexiones sean persistentes en la sesión actual.
¿Podemos conocer al propietario que asignó las unidades para todos los usuarios? ¿Podemos obtener también los nombres de las acciones? Sí, vea el siguiente ejemplo.
Utilice el cmdlet Get-SmbConnection:
Get-SmbConnection |
Select-Object UserName, ShareNamePRODUCCIÓN :
UserName ShareName
-------- ---------
DESKTOP-NKK10JM\Mehvish AnotherFolder
DESKTOP-NKK10JM\Mehvish JavaProject
DESKTOP-NKK10JM\Mehvish ShareEl cmdlet Get-SmbConnection estableció conexiones desde el cliente SMB a los servidores SMB. Usamos este cmdlet para obtener el UserName y el ShareName del propietario. Recuerde, el Share se conectó dos veces, con las letras de unidad Z: y Y:, pero aparecería una vez en el ejemplo anterior. Puede encontrar más información sobre este cmdlet aquí.
Usando el cmdlet Get-PSDrive
Utilice el cmdlet Get-PSDrive para obtener unidades asignadas para todos los usuarios en PowerShell.
Utilice el cmdlet Get-PSDrive:
Get-PSDrive -PSProvider FileSystemPRODUCCIÓN :
Name Used (GB) Free (GB) Provider Root CurrentLocation
---- --------- --------- -------- ---- ---------------
C 35.34 82.59 FileSystem C:\ Users\Mehvish
D 19.92 468.36 FileSystem D:\
E 3.82 439.41 FileSystem E:\
K 3.82 439.41 FileSystem \\DESKTOP-NKK10JM\JavaProject
M 3.82 439.41 FileSystem \\DESKTOP-NKK10JM\AnotherFolder
Y 3.82 439.41 FileSystem \\DESKTOP-NKK10JM\Share
Z 3.82 439.41 FileSystem \\DESKTOP-NKK10JM\ShareAquí, usamos Get-PSDrive para obtener todas las unidades en la sesión actual proporcionadas por FileSystem, que especificamos usando el parámetro -PSProvider. . Si no especificamos este parámetro, entonces Get-PSDrive recuperaría las unidades lógicas de Windows, las unidades temporales especificadas por la sesión, las unidades expuestas por PowerShell y las unidades de red asignadas persistentes.
Conozca la diferencia entre unidades temporales y persistentes aquí.
Veamos el siguiente ejemplo para entender claramente lo que dijimos en el último párrafo.
Utilice el cmdlet Get-PSDrive:
Get-PSDrive PRODUCCIÓN :
Name Used (GB) Free (GB) Provider Root CurrentLocation
---- --------- --------- -------- ---- ---------------
Alias Alias
C 35.38 82.56 FileSystem C:\ Users\Mehvish
Cert Certificate \
D 19.92 468.36 FileSystem D:\
E 3.82 439.41 FileSystem E:\
Env Environment
Function Function
HKCU Registry HKEY_CURRENT_USER
HKLM Registry HKEY_LOCAL_MACHINE
K 3.82 439.41 FileSystem \\DESKTOP-NKK10JM\JavaProject
M 3.82 439.41 FileSystem \\DESKTOP-NKK10JM\AnotherFolder
Variable Variable
WSMan WSMan
Y 3.82 439.41 FileSystem \\DESKTOP-NKK10JM\Share
Z 3.82 439.41 FileSystem \\DESKTOP-NKK10JM\ShareExploramos diferentes soluciones; Puede elegir cualquiera según las necesidades de su proyecto.
Se trata de cómo obtener una unidad asignada para todos los usuarios en PowerShell.
