Cómo utilizar PowerShell para localizar archivos OST de gran tamaño eficazmente

En los entornos laborales digitalizados de hoy, la gestión eficaz de los espacios de almacenamiento en los sistemas informáticos es primordial. A medida que dependemos más de la comunicación digital, una herramienta en la que confían muchos profesionales es Microsoft Outlook. Con el uso prolongado, los archivos OST (tabla de almacenamiento sin conexión) pueden crecer significativamente en tamaño, ocupando potencialmente grandes cantidades de espacio en disco. En este post, presentamos un script de PowerShell que ayudará a los profesionales de TI a localizar archivos OST de gran tamaño.

Antecedentes

Un archivo OST es esencialmente una copia de los elementos del buzón de Exchange Server. Con el tiempo, a medida que se acumulan más datos, estos archivos pueden aumentar, lo que plantea problemas de almacenamiento. Especialmente para los profesionales de TI y los proveedores de servicios gestionados (MSP), controlar estos archivos de gran tamaño es esencial para garantizar un rendimiento óptimo del sistema y gestionar el almacenamiento de forma eficiente. No se trata sólo de liberar espacio, sino de comprender el comportamiento de los usuarios, optimizar los recursos y anticiparse a posibles problemas.

El script para localizar archivos OST de gran tamaño

<#
.SYNOPSIS
    Find large OST files in the user's folder or recursively under C:.
.DESCRIPTION
    Find large OST files in the user's folder or recursively under C:.
.PARAMETER MinSize
    The minimum file size. This expects the file size to be in gigabytes.
.PARAMETER AllFolders
    Will search all folders under C:.
.EXAMPLE
     -MinSize 50
    Search for OST files larger than 50GB in each user's Outlook folder.
.EXAMPLE
     -AllFolders -MinSize 50
    Search for OST files larger than 50GB under C: recursively.
.OUTPUTS
    String[]
.NOTES
    Minimum OS Architecture Supported: Windows 10, Windows Server 2016
    Exit code 1: If at least 1 OST was found larger than MinSize
    Exit code 0: If no OST's where found larger than MinSize
    Release Notes:
    Initial Release
By using this script, you indicate your acceptance of the following legal terms as well as our Terms of Use at https://www.ninjaone.com/terms-of-use.
    Ownership Rights: NinjaOne owns and will continue to own all right, title, and interest in and to the script (including the copyright). NinjaOne is giving you a limited license to use the script in accordance with these legal terms. 
    Use Limitation: You may only use the script for your legitimate personal or internal business purposes, and you may not share the script with another party. 
    Republication Prohibition: Under no circumstances are you permitted to re-publish the script in any script library or website belonging to or under the control of any other software provider. 
    Warranty Disclaimer: The script is provided “as is” and “as available”, without warranty of any kind. NinjaOne makes no promise or guarantee that the script will be free from defects or that it will meet your specific needs or expectations. 
    Assumption of Risk: Your use of the script is at your own risk. You acknowledge that there are certain inherent risks in using the script, and you understand and assume each of those risks. 
    Waiver and Release: You will not hold NinjaOne responsible for any adverse or unintended consequences resulting from your use of the script, and you waive any legal or equitable rights or remedies you may have against NinjaOne relating to your use of the script. 
    EULA: If you are a NinjaOne customer, your use of the script is subject to the End User License Agreement applicable to you (EULA).
#>
[CmdletBinding()]
param (
    [Parameter()]
    [double]
    $MinSize = 50,
    [switch]
    $AllFolders
)

begin {
    function Test-IsElevated {
        $id = [System.Security.Principal.WindowsIdentity]::GetCurrent()
        $p = New-Object System.Security.Principal.WindowsPrincipal($id)
        $p.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator)
    }
}
process {
    if (-not (Test-IsElevated)) {
        Write-Error -Message "Access Denied. Please run with Administrator privileges."
        exit 1
    }
    $script:Found = $false

    if ($AllFolders) {
        $FoundFiles = Get-ChildItem C: -Filter *.ost -Recurse -Force -ErrorAction SilentlyContinue | Where-Object { $_.Length / ($MinSize * 1GB) -gt 1 }
        $FoundFiles | Select-Object FullName, Length | ForEach-Object {
            $Name = $_.FullName
            $Size = $_.Length
            Write-Host "$Name $Size bytes"
        }
        # If you wish to automatically remove the file(s) uncomment the line below. Do note that this is permanent! Make backups!
        # $FoundFiles | Remove-Item -Force -Confirm:$false
        if ($FoundFiles) {
            $script:Found = $true
        }
    }
    else {
        $UsersFolder = "C:Users"
        $Outlook = "AppDataLocalMicrosoftOutlook"
        Get-ChildItem -Path $UsersFolder | ForEach-Object {
            $User = $_
            $Folder = "$UsersFolder$User$Outlook"
            if ($(Test-Path -Path $Folder)) {
                $FoundFiles = Get-ChildItem $Folder -Filter *.ost | Where-Object { $_.Length / ($MinSize * 1GB) -gt 1 }
                $FoundFiles | Select-Object FullName, Length | ForEach-Object {
                    $Name = $_.FullName
                    $Size = $_.Length
                    Write-Host "$Name $Size bytes"
                }
                # If you wish to automatically remove the file(s) uncomment the line below. Do note that this is permanent! Make backups!
                # $FoundFiles | Remove-Item -Force -Confirm:$false
                if ($FoundFiles) {
                    Write-Verbose "Found"
                    $script:Found = $true
                }
            }
        }
    }

    if ($script:Found) {
        exit 1
    }
    exit 0
}
end {}

 

Accede a más de 300 scripts en el Dojo de NinjaOne

Obtén acceso

Análisis detallado

El script para localizar archivos OST de gran tamaño puede compartimentarse en varias áreas clave:

  • Sinopsis y descripción: da una visión general del propósito del script, que es encontrar archivos OST grandes, ya sea en la carpeta de un usuario o de forma recurrente en la unidad C:.
  • Parámetros: determina los detalles de la búsqueda. Esto incluye el tamaño mínimo del archivo (en GB) y si se debe buscar en todas las carpetas de la unidad C:.
  • Control de la elevación de los permisos: antes de profundizar en la búsqueda de archivos, el script para localizar archivos OST de gran tamaño comprueba si se dispone de privilegios administrativos. Sin esos derechos, el script no puede sondear niveles más profundos del sistema.
  • Lógica de búsqueda de archivos: dependiendo de los parámetros elegidos, el script buscará en todas las carpetas de la unidad C: los archivos OST de tamaño superior al especificado o limitará la búsqueda a la carpeta Outlook de cada usuario.
  • Output: si se encuentran archivos OST de gran tamaño, el script muestra su ruta de acceso completa y su tamaño en bytes. Además, el script para localizar archivos OST de gran tamaño tiene líneas comentadas para borrar estos archivos; esta tarea es responsabilidad del profesional de TI.

Posibles casos de uso

Imaginemos a María, administradora de TI en una empresa de tamaño considerable. Recibe quejas de varios departamentos sobre el retraso del sistema y la disminución del rendimiento. Tras algunas pruebas de diagnóstico, María detecta problemas de almacenamiento: varios archivos de gran tamaño ocupan un espacio esencial. Con este script para localizar archivos OST de gran tamaño, María puede localizar rápidamente los archivos OST de gran tamaño y determinar la mejor forma de proceder, ya sea archivar, eliminar o reubicar los archivos.

Comparaciones

Aunque existen herramientas y software basados en GUI que proporcionan análisis de disco, la ventaja de este script de PowerShell para localizar archivos OST de gran tamaño es su especificidad y potencial de automatización. Se dirige directamente a los archivos OST y puede incorporarse a flujos de trabajo de automatización más amplios, a diferencia de muchas herramientas de terceros que ofrecen panorámicas más amplias sin el mismo nivel de personalización.

FAQ

  • ¿Este script para localizar archivos OST de gran tamaño puede eliminar los archivos OST localizados?
    Aunque el script identifica y enumera los archivos OST de gran tamaño, hay una línea comentada para la eliminación. Si no se comenta, el script eliminará los archivos identificados.
  • ¿El parámetro de tamaño sólo está en GB?
    Sí, el script espera un parámetro de tamaño de archivo en gigabytes.

Implicaciones

Localizar y gestionar archivos OST de gran tamaño es algo más que un ejercicio de almacenamiento. También tiene que ver con la seguridad informática. Los archivos OST sobredimensionados pueden ser un indicio de acaparamiento de datos o incluso de filtraciones de datos, y pueden actuar como vectores de exportación de grandes cantidades de datos. La gestión proactiva de estos archivos puede mitigar los riesgos potenciales.

Recomendaciones

  • Haz siempre una copia de seguridad de los datos antes de ejecutar scripts que puedan borrar archivos.
  • Ejecuta estos scripts regularmente para mantener un rendimiento óptimo del sistema.
  • No quites el comentario la opción de borrar si no estás seguro de las consecuencias.

Reflexiones finales

Gestionar archivos de gran tamaño, especialmente archivos OST, puede ser una tarea difícil, pero herramientas como NinjaOne ofrecen soluciones sólidas para la gestión general de TI. Gracias a scripts personalizados como el que acabamos de analizar para localizar archivos OST de gran tamaño, los profesionales de TI pueden garantizar la eficiencia de los sistemas, la optimización del almacenamiento y la minimización de riesgos en un panorama informático en constante evolución.

Categorías:

Quizá también te interese…

×

¡Vean a NinjaOne en acción!

Al enviar este formulario, acepto la política de privacidad de NinjaOne.

Términos y condiciones de NinjaOne

Al hacer clic en el botón “Acepto” que aparece a continuación, estás aceptando los siguientes términos legales, así como nuestras Condiciones de uso:

  • Derechos de propiedad: NinjaOne posee y seguirá poseyendo todos los derechos, títulos e intereses sobre el script (incluidos los derechos de autor). NinjaOne concede al usuario una licencia limitada para utilizar el script de acuerdo con estos términos legales.
  • Limitación de uso: solo podrás utilizar el script para tus legítimos fines personales o comerciales internos, y no podrás compartirlo con terceros.
  • Prohibición de republicación: bajo ninguna circunstancia está permitido volver a publicar el script en ninguna biblioteca de scripts que pertenezca o esté bajo el control de cualquier otro proveedor de software.
  • Exclusión de garantía: el script se proporciona “tal cual” y “según disponibilidad”, sin garantía de ningún tipo. NinjaOne no promete ni garantiza que el script esté libre de defectos o que satisfaga las necesidades o expectativas específicas del usuario.
  • Asunción de riesgos: el uso que el usuario haga del script corre por su cuenta y riesgo. El usuario reconoce que existen ciertos riesgos inherentes al uso del script, y entiende y asume cada uno de esos riesgos.
  • Renuncia y exención: el usuario no hará responsable a NinjaOne de cualquier consecuencia adversa o no deseada que resulte del uso del script y renuncia a cualquier derecho o recurso legal o equitativo que pueda tener contra NinjaOne en relación con su uso del script.
  • CLUF: si el usuario es cliente de NinjaOne, su uso del script está sujeto al Contrato de Licencia para el Usuario Final (CLUF).