Tengo este de una sola línea:
get-WmiObject win32_logicaldisk -Computername remotecomputer
y la salida es esta:
DeviceID : A:
DriveType : 2
ProviderName :
FreeSpace :
Size :
VolumeName :
DeviceID : C:
DriveType : 3
ProviderName :
FreeSpace : 20116508672
Size : 42842714112
VolumeName :
DeviceID : D:
DriveType : 5
ProviderName :
FreeSpace :
Size :
VolumeName :
¿Cómo llego Freespace
y Size
de DeviceID
C:
? Necesito extraer solo estos dos valores sin otra información. Lo he probado con Select
cmdlet, pero sin ningún efecto.
Editar: necesito extraer solo los valores numéricos y almacenarlos en variables.
powershell
scripting
powershell-2.0
culter
fuente
fuente
[Math]::Round($Disk.Freespace / 1GB)
1mb
devuelve un valor de1048576
y no1000000
????1MiB
(con el caso apropiado) pero generalmente se muestra en minúsculas, sin la "i". Ver Mebibyte .Solución mucho más simple:
y para computadoras remotas (necesidades
Powershell Remoting
)fuente
psexec -u administrator \\[computer name or IP] powershell "get-psdrive C"
Solo un comando simple, dulce y limpio, pero esto solo funciona para discos locales
Aún puede usar este comando en un servidor remoto haciendo Enter-PSSession -Computername ServerName y luego ejecutar Get-PSDrive, extraerá los datos como si los hubiera ejecutado desde el servidor.
fuente
Creé una función avanzada de PowerShell (cmdlet de script) hace un tiempo que le permite consultar varias computadoras.
El código de la función tiene un poco más de 100 líneas, por lo que puede encontrarlo aquí: Versión de PowerShell del comando df
Consulte la sección Uso para ver ejemplos. El siguiente ejemplo de uso consulta un conjunto de computadoras remotas (entrada de la canalización de PowerShell) y muestra la salida en un formato de tabla con valores numéricos en forma legible por humanos:
fuente
Hay dos problemas que encontré con las otras sugerencias
1) Las asignaciones de unidades no son compatibles si ejecuta PowerShell en el programador de tareas
2) Puede obtener errores de acceso denegado errores al intentar usar "get-WmiObject" en computadoras remotas (dependiendo de la configuración de su infraestructura, por supuesto)
La alternativa que no sufre estos problemas es utilizar GetDiskFreeSpaceEx con una ruta UNC:
fuente
Otra forma es lanzar una cadena a un objeto WMI:
También puede dividir los resultados por 1 GB o 1 MB si desea diferentes unidades:
La salida es:
Remotecomputer C: has 252.7 GB free of 298.0 GB Total
fuente
Línea de comando:
Salida:
línea de comando:
fuera:
línea de comando:
fuera:
fuente
wmic logicaldisk get size
no tiene en cuenta el espacio reservado aunque ... en powershellget-volume
devuelve el tamaño total práctico (es decir, menos el espacio reservado), pero luego, cuando lo intentoget-volume | format-list size
, dice el tamaño total más el espacio reservado ... ¿cómo obtengo el tamaño total menos el espacio reservado? para cada unidad con powershell ???fuente
fuente
Conozco las herramientas psExec que puede descargar desde aquí
Viene un psinfo.exe del paquete de herramientas. El uso básico es de la siguiente manera en powershell / cmd.
Sin embargo, podrías tener muchas opciones con él.
Uso: psinfo [[\ computadora [, computadora [, ..] | @file [-u usuario [-p psswd]]] [-h] [-s] [-d] [-c [-t delimitador]] [filtro]
\ computadora Ejecute el comando en la computadora remota o las computadoras especificadas. Si omite el nombre de la computadora, el comando se ejecuta en el sistema local, y si especifica un comodín (\ *), el comando se ejecuta en todas las computadoras del dominio actual.
filter Psinfo solo mostrará los datos del campo que coincida con el filtro. por ejemplo, "servicio psinfo" enumera solo el campo del paquete de servicio.
fuente
Entro de forma remota en la computadora usando Enter-PSsession pcName y luego escribo Get-PSDrive
Eso enumerará todas las unidades y el espacio utilizado y restante. Si necesita ver toda la información formateada, envíelo a FL de esta manera: Get-PSdrive | FL *
fuente
Creé esta sencilla función para ayudarme. Esto hace que mis llamadas sean mucho más fáciles de leer que tener en línea un Get-WmiObject , declaraciones Where-Object , etc.
fuente
En caso de que desee verificar varias letras de unidad y / o filtrar entre unidades locales y de red, puede usar PowerShell para aprovechar la clase WMI Win32_LogicalDisk . Aquí tienes un ejemplo rápido:
Utilicé la técnica anterior para crear un script de Powershell que verifica todas las unidades y envía una alerta por correo electrónico cada vez que están por debajo de una cuota definida por el usuario. Puede obtenerlo de esta publicación en mi blog.
fuente
Diversión de PowerShell
fuente
Acabo de encontrar el comando Get-Volume , que regresa
SizeRemaining
, por lo que(Get-Volume -DriveLetter C).SizeRemaining / (1e+9)
se puede usar algo como para ver que quedan Gb para el disco C. Parece que funciona más rápido queGet-WmiObject Win32_LogicalDisk
.fuente