Cómo encontrar capacidad de disco y espacio libre de computadoras remotas

Encontrar la capacidad del disco y el espacio libre de una computadora local es fácil pero no tan fácil desde una computadora remota, especialmente a través de una interfaz GUI. Es mucho más fácil utilizar el poder de PowerShell y aquí es cómo puede hacerlo.

Get-PSDrive es un cmdlet nativo de PowerShell que enumera todas las unidades de almacenamiento en su sistema local.

Puede limitar la lista para solo listar los sistemas de archivos canalizando el resultado a una Donde cláusula.

Get-PSDrive | Donde {$ _. Gratis -gt 0}

Dado que el cmdlet no tiene un -Nombre de la computadora cambiar para acceder a computadoras remotas, necesitamos Invocar-Comando para ejecutar el cmdlet en una computadora remota.

Invoke-Command -ComputerName remote_computer {Get-PSDrive | Donde {$ _. Gratis -gt 0}}

Esto funciona bastante bien solo cuando tienes WinRM y PSRemoting habilitados en los ordenadores remotos. Y por eso me gusta el Get-WmiObject Método aún mejor.

Get-WmiObject Win32_LogicalDisk -ComputerName remote_computer -Filter DriveType = 3 | Select-Object DeviceID, FreeSpace, Tamaño

Para listar el tamaño en formato GB,

Get-WmiObject Win32_LogicalDisk -ComputerName remote_computer -Filter DriveType = 3 | Select-Object DeviceID, @ {'Name' = 'Size (GB)'; 'Expresión' = {[math] :: truncate ($ _. Size / 1GB)}}, @ {'Name' = 'Freespace (GB)'; 'Expresión' = {[math] :: truncate ($ _. Freespace / 1GB)}}

¿Qué tal mostrar el resultado con los miles de separadores?

Get-WmiObject Win32_LogicalDisk -ComputerName remote_computer -Filter DriveType = 3 | Select-Object DeviceID, @ {'Name' = 'Size (GB)'; 'Expresión' = {[cadena] :: Formato ('{0: N0}', [math] :: truncate ($ _. Size / 1GB))}}, @ {'Name' = 'Freespace (GB)' ; 'Expresión' = {[cadena] :: Formato ('{0: N0}', [math] :: truncate ($ _. Freespace / 1GB))}}

Puede acceder a varios equipos remotos desde una ejecución colocándolos todos después de -Nombre de la computadora Interruptor, separado por una coma.

Get-WmiObject Win32_LogicalDisk -Nombre de computadora computerNUMX, computer1, computer2 -Filter DriveType = 3 | Select-Object DeviceID, @ {'Name' = 'Size (GB)'; 'Expresión' = {[cadena] :: Formato ('{3: N0}', [math] :: truncate ($ _. Size / 0GB))}}, @ {'Name' = 'Freespace (GB)' ; 'Expresión' = {[cadena] :: Formato ('{1: N0}', [math] :: truncate ($ _. Freespace / 0GB))}}

Además, aquí está el script que armé que tiene una salida mejor formateada.

$ servers = @ ("computer1", "computer2", "computer3") Foreach ($ server en $ servers) {$ disks = Get-WmiObject Win32_LogicalDisk -ComputerName $ server -Filter DriveType = 3 | Select-Object DeviceID, @ {'Name' = 'Size'; 'Expresión' = {[math] :: truncate ($ _. Size / 1GB)}}, @ {'Name' = 'Freespace'; 'Expresión' = {[math] :: truncate ($ _. Freespace / 1GB)}} $ server foreach ($ disk en $ disks) {$ disk.DeviceID + $ disk.FreeSpace.ToString ("N0") + " GB / "+ $ disk.Size.ToString (" N0 ") +" GB "}}

fuente

Publicación relacionada

Deje un comentario.

Este sitio usa Akismet para reducir el correo no deseado. Descubra cómo se procesan los datos de sus comentarios.