Realizar tareas mediante instrucciones de comando (CMD) siempre ha sido una opción mas completa por la cantidad de datos que se pueden obtener; Ahora te muestro como obtener Marca, Modelo, Serie, Tipo de disco, Espacio libre en Disco, Tamaño del disco, Chequear errores del Disco, mediante Command Prompt.
Te mostrare el funcionamiento de varios comandos a utilizar para obtener esta información del disco duro de tu computadora o una computadora remota que se encuentre en la red local sin la necesidad de abrirla.
Comando CMD para saber la marca, modelo y número de serie del Disco Duro
Con la siguiente instrucción obtendremos fácil y rápidamente marca, modelo y serie del disco duro o discos de nuestra computadora.
wmic diskdrive get caption,serialnumber
Comandos CMD para saber el tamaño de un Disco Duro
Cuando debo revisar el espacio en disco de los servidores con Windows Server en versión Core utilizo alguna de las siguientes instrucciones; cabe aclarar que estos comandos funcionan en cualquier versión de Windows.
Obtener espacio libre en disco duro mediante el comando “DIR”
Dir es utilizado para mostrar una lista de archivos y subcarpetas; pero si lo complementamos podemos obtener el espacio libre, con la siguiente instrucción:
dir|find "bytes free"
Esta instrucción la podemos ejecutar remotamente por medio de psexec.
Ejemplo de resultado utilizando dir:
Si cuentas con varias unidades de disco, debes navegar al directorio de dicha unidad por ejemplo otra unidad de disco que tengo es la D, así que cambiare de unidad tecleando D:
Comando CMD utilizando wmic
WMIC (Windows Management Instrumentation Command), Lea una amplia gama de información de computadoras locales o remotas. También proporciona una forma de realizar cambios de configuración en varias máquinas remotas.
Esta instrucción es un poco más avanzada el cual nos permite obtener mayor información, pero en este caso para obtener el espacio en disco indicando la unidad:
wmic LogicalDisk Where DriveType="3" Get DeviceID,FreeSpace|find /I "LETRA_UNIDAD"
Esta instrucción se puede ejecutar remotamente de la siguiente manera
wmic /node:"%NOMBRE_EQUIPO_O_IP%" LogicalDisk Where DriveType="3" Get DeviceID,FreeSpace|find /I "LETRA_UNIDAD"
Ejemplo de resultado utilizando wmic:
Preguntas frecuentes
¿Puedo obtener el espacio libre en disco en GB?
Con las instrucciones anteriores no es posible (Al menos que yo conozca), pero más adelante te mostrare con PowerShell como obtener esta información en Gb.
También se puede convertir los bytes a gigabytes por ejemplo en Google buscan bytes to gigabytes y les va mostrar el convertidor de unidades.
Obtener espacio libre en disco en Gigabytes con PowerShell
Otra opción para obtener el espacio libre en disco pero en Gigabytes es por medio de PowerShell, a diferencia de utilizar los comandos anteriores que lo muestra en bytes; la instrucción a ejecutar en PowerShell para obtener el tamaño de disco y el espacio libre es:
Con la siguiente instrucción se obtiene el tamaño total y el espacio libre de la unidad específica del equipo local (donde se ejecuta la instrucción), debemos especificar la unidad en DeviceID el cual modificamos LETRA_UNIDAD en la instrucción, ejemplo C:
Get-WmiObject Win32_LogicalDisk -Filter "DeviceID='LETRA_UNIDAD'" | select-object Size,Freespace | % {$_.FreeSpace=($_.FreeSpace/1GB);$_.Size=($_.Size/1GB);$_}
Comando PowerShell para obtener espacio en disco en Gigabytes de un equipo remoto
Con la siguiente instrucción se obtiene el tamaño total y el espacio libre de la unidad específica del equipo remoto, debemos especificar el nombre del equipo modificando NOMBRE_EQUIPO y la unidad en LETRA_UNIDAD en la instrucción, ejemplo C:
Get-WmiObject Win32_LogicalDisk -ComputerName NOMBRE_EQUIPO -Filter "DeviceID='LETRA_UNIDAD'" | select-object Size,Freespace | % {$_.FreeSpace=($_.FreeSpace/1GB);$_.Size=($_.Size/1GB);$_}
Comando PowerShell para obtener un listado de las unidades
La siguiente instrucción proporciona la información de todas las unidades conectadas al equipo.
get-psdrive –psprovider filesystem
Comandos para obtener información de Disco de computadoras remotas
Ahora nos enfocaremos a realizar el mismo proceso, pero para computadoras remotas
Código VBScript para obtener información de disco de un listado de computadoras remotas
El usuario desde el cual se ejecuta debe tener privilegios de administrador de red, los equipos deben estar prendidos.
- El siguiente código lo copiamos y pegamos en un archivo el cual guardaremos como .vbs
- Creamos 2 archivos txt los nombramos como deseemos, uno va a estar en blanco y el otro contendrá el listado de Nombres o IPs de los equipos.
- En el código cambiamos la ruta de estos archivos en las lineas 3 y 4 (En este se muestra como c:Resultado.txt y c:ListadoDeEquipos.txt). Nota: Si tienen problemas de escritura en el C: cambien de ruta por ejemplo al escritorio.
- Ahora ejecutamos, tardara unos segundos o minutos dependiendo que tan grande sea el listado de equipos
Option Explicit
const strReport = "c:Resultado.txt"
const sFile = "C:ListadoDeEquipos.txt"
Dim objWMIService, objItem, colItems
Dim strDriveType, strDiskSize, txt
Dim oFSO, oFile, sText,strComputer
Set oFSO = CreateObject("Scripting.FileSystemObject")
Dim objFSO,objTextFile
Set objFSO = createobject("Scripting.FileSystemObject")
Set objTextFile = objFSO.CreateTextFile(strReport)
If oFSO.FileExists(sFile) Then
Set oFile = oFSO.OpenTextFile(sFile, 1)
Do While Not oFile.AtEndOfStream
sText = oFile.ReadLine
If Trim(sText) <> "" Then
strComputer=sText
Set objWMIService = GetObject("winmgmts:\" & strComputer & "rootcimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_LogicalDisk WHERE DriveType=3")
txt = sText & vbtab & "Drive" & vbtab & "Size" & vbtab & "Used" & vbtab & "Free" & vbtab & "Free(%)" & vbcrlf
For Each objItem in colItems
DIM pctFreeSpace,strFreeSpace,strusedSpace
pctFreeSpace = INT((objItem.FreeSpace / objItem.Size) * 1000)/10
strDiskSize = Int(objItem.Size /1073741824) & "Gb"
strFreeSpace = Int(objItem.FreeSpace /1073741824) & "Gb"
strUsedSpace = Int((objItem.Size-objItem.FreeSpace)/1073741824) & "Gb"
txt = txt & vbtab & vbtab & objItem.Name & vbtab & strDiskSize & vbtab & strUsedSpace & vbTab & strFreeSpace & vbtab & pctFreeSpace & vbcrlf
Next
objTextFile.Write(txt)
End If
Loop
objTextFile.Close
oFile.Close
Else
WScript.Echo "No se encuentra el archivo."
End If
Comando CMD WMIC
Lo mas sencillo para consultar el espacio en disco es por medio del siguiente comando, solo que el resultado esta en Byte:
- Debemos cambiar NombreDeEquipo por la IP o el Nombre del Equipo
- Tambien LetraDeUnidad por la letra asignada al disco en el equipo (Comúnmente es C:, si no sabemos la letra podemos utilizar primero Caption en lugar de FreeSpace).
wmic /node:NombreDeEquipo logicaldisk where "DeviceID='LetraDeUnidad:'" get FreeSpace
- Si deseamos conocer la capacidad utilizamos Size en lugar de FreeSpace Ej:
wmic /node:NombreDeEquipo logicaldisk where "DeviceID='LetraDeUnidad:'" get Size
- Tambien podemos ejecutar remotamente [Ver como ejecutar comando remotamente con psexec]
fsutil volume diskfree c:
Comando psinfo de PSTools para obtener toda la información técnica de la computadora
Podemos utilizar el comando psinfo el cual primero requerimos tener la aplicación PsTools de Sysinternals (es completamente segura descargada desde el sitio de microsoft), esta no se instala cuando vayamos a utilizar algun comando solo debemos estar dentro de la carpeta desde la linea de comando o agregar la ruta a la variable de entorno de sistema y poder ejecutarlo sin necesidad de entrar a la carpeta [Ver Como Agregar Variable de Entorno].
- Abrimos la consola CMD y escribimos el siguiente comando:
psinfo -d \IPDelEquipoONombre
- Si requieren especificar usuario y clave.
psinfo -d \IPDelEquipoNombre -u "usuario" -p "contraseña"
- Nos dará los datos del equipo mostrando al final los datos del o los discos duros.
Código PowerShell para obtener informacion de Disco en computadora remota
Primero debemos ejecutar el siguiente comando donde pondremos los datos del usuario con privilegios de administrador.
$cred = Get-Credential
El cual mostrara lo siguiente:
Ahora en el siguiente código en la ultima linea en NombreDeEquipo ponemos el nombre del equipo del cual deseamos obtener la información.
$Size = @{name="Size(GB)";expression={ "{0:N2}" -f ([double]$_.Size/1GB) }}
$FreeSpace = @{name="FreeSpace(GB)";expression={ "{0:N2}" -f ([double]$_.FreeSpace/1GB) }}
$Used=@{name="Used(GB)";expression={ "{0:N2}" -f (([double]$_.Size-[double]$_.FreeSpace)/1GB) }}
$PercentFree=@{name="PercentFree";expression={ "{0:N2}" -f ([double]$_.FreeSpace/[double]$_.Size) }}
$PercentUsed=@{name="PercentUsed";expression={ "{0:N2}" -f (([double]$_.Size-[double]$_.FreeSpace)/[double]$_.Size) }}
Get-WmiObject Win32_LogicalDisk -filter "DriveType=3" -computerName NombreDeEquipo | Select-Object SystemName,DeviceID,VolumeName,$Size,$FreeSpace,$used,$PercentFree,$PercentUsed
Nos dará el resultado como se muestra en la siguiente imagen.
Este código fue escrito por Shay Levi’s
Si desean exportarlo a Excel deben poner al finalizar la última linea lo siguiente:
| Export-Csv c:infodisco.csv
o si desean exportarlo a TXT
| Out-File c:infodisco.txt
Nota: Si marca error al exportar verifica que tengas privilegios para guardar en la ruta escrita, si continua el error intenta en otro folder.
Checar Errores en Disco Duro CMD – Forzar el CheckDisk en Windows 10
Los usuarios de Windows 10 y 8 pueden haber notado que la comprobación de errores de disco tiene un proceso diferente a las versiones anteriores de Windows. Realizar ocasionalmente los errores de disco es una buena practica, asi podemos darnos cuenta del estado de nuestro disco duro.
A partir de Windows 8 Microsoft ha re diseñado la utilidad chkdsk (Comprobación de errores de disco), En Windows 10 y 8 introdujeron un sistema de archivos llamado ReFS que no requiere realizar la comprobación de errores sin conexión (Sin estar corriendo Windows) para reparar archivos corruptos; el cual este se ejecuta automáticamente cada cierto tiempo.
Pero ¿Que sucede si deseamos ejecutar el chkdsk tradicional de Windows? veamos los siguientes pasos.
Forzar la comprobación de errores de disco con CMD
Como ya hemos visto en Windows 10 y 8 si ejecutamos un análisis de disco no se ejecuta el proceso tradicional el cual me he topado que si encuentra errores en sectores al momento de ejecutar.
1.- Damos clic derecho sobre el menú Inicio y abrimos Símbolo de sistema (Administrador) [Command Prompt (Admin)].
2.- Damos Si (Yes) en la notificación del UAC.
3.- Ejecutamos la instrucción chkdsk.
Sintaxis: chkdsk [Drive:] [parameters]
Ejemplo:
chkdsk C: /f /r /x
Donde la “/f” indica corregir cualquier error encontrado; “/r” indica localizar sectores dañados de disco y recuperar información legible; “/x” es para forzar a la unidad a desmontarse antes del proceso.
Si la unidad que vamos a analizar es donde tenemos el sistema operativo nos pedirá programar la comprobación en la siguiente reiniciada de equipo donde ponemos Y + Enter.
4.- Reiniciamos el equipo y debe comenzar el análisis.
5.- Esperamos a que finalice, si no alcanzamos a observar el resultado podemos ver: Windows – ¿Como visualizar el resultado del CHKDSK (Comprobación de errores de disco)?
Nota: en algunos casos cuando la unidad no es utilizada por nuestro sistema operativo o algún programa el proceso se ejecutará en la misma ventana de símbolo de sistema, ejemplo imagen siguiente: