Ir al contenido principal

Windows | |PowerShell | disco duro | almacenamiento | storage

 

Cmdlets de PowerShell esenciales para auditar y mantener el almacenamiento

PowerShell v5 ofrece algunas características nuevas para administrar el almacenamiento.

PowerShell v5 ofrece algunas características nuevas para administrar el almacenamiento, basándose en las capacidades que estaban disponibles en PowerShell 4.

En los días previos a PowerShell, la administración de discos a través de la línea de comandos era posible, pero no fue fácil y ciertamente no se sintió como una experiencia unificada. PowerShell hace que las tareas de administración de almacenamiento no solo sean mucho más fáciles de realizar como tareas independientes, sino también mucho más fáciles de integrar en un flujo de trabajo automatizado.

PowerShell hace que la administración del almacenamiento sea mucho más fácil al incorporar todas las funciones que solían estar en muchos programas separados con su propia sintaxis en una experiencia de PowerShell unificada con una sintaxis estándar y soporte para la canalización y otras características para hacer cosas en grupos grandes en lugar de uno a la vez.

Estos cmdlets comenzaron en su mayoría en PowerShell 4, pero PowerShell 5 nos trae algunas características nuevas interesantes para aquellos que piensan en la administración del servidor desde la mentalidad de DevOps de configuración como código donde la configuración de estado deseado (DSC) está a la orden del día y los servidores se configuran a sí mismos en función de nuestra secuencias de comandos de configuración.

Puede comenzar con lo que ha cambiado para PowerShell 5  aquí y leer más detalles sobre la compatibilidad de los cmdlets * -item para diferentes tipos de vínculos  aquí .

Ahora, echemos un vistazo a algunos de los cmdlets de PowerShell esenciales para auditar y mantener el almacenamiento.

Obtener información del disco

Quizás recuerde que en los viejos tiempos, si deseaba obtener información sobre los discos, abría una ventana de CMD y usaba DISKPART. Eso significaba iniciar el programa y usar su sintaxis para navegar a su manera. Eso ya no existe y todo lo que tenemos que hacer es escribir un solo cmdlet de PowerShell para obtener la información del disco que necesitamos.

PS C: \> Obtener-Disco

El cmdlet Get-Disk devolverá información sobre cualquier disco conectado al sistema operativo actual, pero podemos usar diferentes cmdlets para obtener información sobre los discos que se nos presentan como discos físicos o como discos virtuales por separado. Podemos usar  Get-PhysicalDisk  para obtener información sobre los discos que el sistema operativo ve como discos físicos y  Get-VirtualDisk  para ver información sobre los discos virtuales creados a partir de grupos de almacenamiento,  lo que también puede hacer en Azure . Para ver esa información por separado, puede usar los cmdlets como se muestra a continuación.

Hasta este punto, aunque todavía no sabemos qué unidades veremos si abrimos el Explorador de archivos. Para verlos, podemos usar  Get-Volume , o como prefiero, ya que no nos importan mucho los discos CD-ROM o los disquetes en entornos virtuales, podemos usar  Get-Partition  para ver las letras de unidad asignadas y las discos en los que residen.

Es posible que haya notado que, aunque se devolvieron tres discos físicos de Get-PhysicalDisk, solo hay dos volúmenes y dos particiones devueltos en el resultado anterior. La razón de esto es que he adjuntado un disco físico a esta máquina virtual a través del portal de administración de Azure, pero aún no he preparado el espacio de almacenamiento de ese disco para su uso ni le he asignado una letra de unidad.

Usar nuevo espacio de almacenamiento

El resultado devuelto por Get-PhysicalDisk nos mostró que el disco físico número 2 tenía un estilo de partición RAW. Si está acostumbrado a mirar la GUI, eso significa que es espacio no asignado.

Para convertir este espacio en una unidad, debemos completar algunas tareas, que ahora se pueden hacer fácilmente sin tener que hacer clic con el mouse.

Primero inicializamos el disco usando el   cmdlet Initialize-Disk .

PS C: \> Initialize-Disk -Number 2

Ese comando no devolverá ningún resultado. Simplemente devolverá el control de la consola cuando esté listo. La siguiente tarea es crear una nueva partición en la unidad. De hecho, vamos a crear dos particiones en esta unidad solo para mostrar lo fácil que es formatear en el siguiente paso.

PS C: \> Nueva-Partición -DiskNumber 2 -AssignDriveLetter -Tamaño 500gb


PS C: \> Nueva-partición -DiskNumber 2 -AssignDriveLetter -UseMaximumSize


Ahora, cuando invocamos  Get-Partition  , vemos el resultado a continuación.

Al invocar un solo comando dos veces, hemos asignado dos nuevas particiones en nuestro disco. Sin embargo, a pesar de tener una letra de unidad, no puede cargar y colocar carpetas y archivos en ellos todavía. Aún necesitamos formatear estos discos.

Para hacer eso, usaremos  Format-Volume , pero cuando usemos ese cmdlet, solo vamos a invocar una vez para formatear estas dos nuevas unidades. Para descubrir cómo es posible, eche un vistazo a la captura de pantalla a continuación.

Mientras escribo el carácter de guión para el primer parámetro, la función de autocompletar me muestra los parámetros disponibles para su uso. Presiono la flecha hacia abajo para resaltar DriveLetter y la información sobre herramientas me muestra el tipo de entrada esperado. En este caso, puede tomar una matriz de caracteres como entrada. Con eso en mente, le daremos las dos letras de unidad que acabamos de crear y formateará ambas unidades en una sola invocación.

PS C: \> Formato-Volumen -DriveLetter F, G -FileSystem NTFS

Cuando el cmdlet devuelve el control del indicador, tenemos dos nuevas unidades listas para usar. Lo único que no pudimos hacer cuando formateamos esos volúmenes juntos en lugar de individualmente fue asignarles una etiqueta. Podemos arreglar eso ahora usando el   cmdlet Set-Volume .

PS C: \> Set-Volume -DriveLetter F -NewFileSystemLabel "UserData"

No vamos a etiquetar la unidad G porque la usaremos para demostrar los dos conceptos siguientes, lo que resultará en la eliminación de todos modos. 

Reducir, expandir y eliminar particiones

Hacer este tipo de operaciones solía ser algo que implicaba escribir mucho en DISKPART. Ahora, con PowerShell, los cmdlets integrados facilitan la reducción, expansión y eliminación de particiones. Comenzaremos reduciendo la unidad G para que coincida con la unidad F con el  cmdlet Resize-Partition simple  .

PS C: \> Resize-Partition -DriveLetter G -Tamaño 500gb

Eso es todo lo que se necesita para encoger una partición. Pero ahora digamos que queremos deshacernos de él por completo y luego cambiar el tamaño de la unidad F para ocupar el espacio restante. Simplemente invocamos  Remove-Partition  en la unidad G y luego Resize-Partition en la unidad F para expandirlo.

PS C: \> Eliminar-Partición -DriveLetter G

Sin embargo, cuando intentemos cambiar el tamaño de la partición F restante para ocupar el espacio restante, nos encontraremos con un problema. Al invocar Resize-Partition con el tamaño completo de la unidad como parámetro, obtenemos un error como se muestra a continuación.

El cálculo de los tamaños de las unidades rara vez es tan exacto como podríamos esperar cuando se trata de computadoras. Para resolver este problema, podemos retroceder el parámetro de tamaño en incrementos de .01gb hasta que encontremos un tamaño que funcione como se muestra a continuación, y cuando terminemos, tengamos una sola partición para todo el disco, lista para usar.

PS C: \> Resize-Partition -DriveLetter F -Tamaño 1022.87gb

Tenga cuidado al eliminar y cambiar el tamaño de las particiones. Al invocar estos cmdlets, aparecerán cuadros de diálogo de advertencia por un motivo. La eliminación de particiones casi siempre dará como resultado la pérdida de datos.

Nuevas funciones en PowerShell v5

La mayoría de los cmdlets del módulo de almacenamiento son los mismos para PowerShell 5 que para PowerShell 4, pero PS5 tiene algunas características nuevas que ofrecer. 

El primero es compatible con la Galería de PowerShell. Una de las mejores cosas que la galería tiene para nosotros cuando se trata de almacenamiento es el   módulo xStorage para PowerShell DSC. 

El módulo xStorage expone la funcionalidad de los cmdlets del módulo de almacenamiento para su uso con DSC. Esta es una funcionalidad poderosa porque nos permite expresar nuestras configuraciones de forma declarativa en lugar de en scripts paso a paso. Para ver un ejemplo, eliminemos todas las particiones del disco 2 y, por simplicidad, configuraremos la unidad con el único volumen grande con el que terminamos al final de la sección anterior.

PS C:> Get-Partition -DiskNumber 2 | Eliminar partición

Ahora, invoque el siguiente comando para instalar el módulo xStorage.

PS C:> Módulo de instalación xStorage

Para confirmar la instalación, ejecute el siguiente comando y vea que hay tres nuevos recursos agrupados bajo un nuevo Módulo llamado xStorage.

PS C:> Get-DSCResource

Luego de confirmar la instalación podemos comenzar a escribir y ejecutar el siguiente script.

DataDisks de configuración
{
    Importación-DscResource -moduleName xStorage
    Nodo Localhost
    {
        xWaitForDisk Disk2
        {
            disknumber = 2
            RetryIntervalSec = 60
            RetryCount = 60
        }
        xDisk GVolume
        {
            disknumber = 2
            DriveLetter = 'G'
            FSLabel = 'UserData'
        }
    }
}
DataDisks -outputpath c: DataDisks
Start-DscConfiguration -Path c: dataDisks -wait -force -Verbose

Después de una gran cantidad de resultados detallados, tendrá un disco con la nueva letra de unidad y etiqueta que espera. Ese script es solo un pequeño ejemplo de lo que se puede incorporar en un script DSC más grande que configura una máquina completa.

Otra característica nueva de PowerShell v5 se encuentra en un lugar inesperado. En lugar de un nuevo cmdlet, veremos el humilde   cmdlet New-Item . New-Item ahora admite enlaces simbólicos y enlaces físicos. Aquí hay un  escrito más antiguo  sobre los tipos de enlaces simbólicos en Windows, pero no se preocupe por la sintaxis para crearlos porque PowerShell lo facilitará.

Primero crearemos un archivo de destino en nuestro directorio de documentos con el siguiente script.

PS C:> "Datos de prueba" | Out-File -FilePath $ env: USERPROFILEdocumentstestFile.txt

Ahora usaremos el cmdlet New-Item mejorado en PowerShell 5 para crear un enlace simbólico como se muestra en la captura de pantalla a continuación.

Ese archivo tiene cero bytes y si miras su ícono en el explorador de archivos, verás un atajo porque eso es exactamente lo que es.

Ahora podemos crear un enlace duro al mismo archivo y ver cómo se ve en la siguiente captura de pantalla.

Este nuevo archivo tiene una longitud que coincide con el archivo que vinculamos. Si abre este nuevo archivo y edita su contenido y luego lo cierra y abre el archivo original, también encontrará su contenido alterado. 

Podemos hacer algunas cosas poderosas con enlaces como este, pero una cosa que podría molestarnos en el futuro es que una vez que estos enlaces estén configurados, no siempre se puede saber fácilmente mirando en una ventana del explorador de archivos qué es un enlace y qué es. verdadero. Afortunadamente, PowerShell puede mostrarnos mucho más fácilmente qué es un enlace y qué es real. 

Si creamos un nuevo archivo en el nivel superior de la unidad c: podemos ver las diferencias inmediatamente porque el   cmdlet Get-ChildItem nos mostrará inmediatamente, como podemos ver a continuación.

La administración de servidores con PowerShell es cada vez mejor, y la administración del almacenamiento es solo una faceta de la maravilla. Sigue explorando y feliz PowerShelling. 

Comentarios

Entradas populares de este blog

Windows | Linux | Java SE 8 Archive Downloads (JRE y JDK 8u211 and later)

 https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html Java SE 8 Archive Downloads (JDK 8u211 and later) Go to the  Oracle Java Archive  page. The JDK is a development environment for building applications using the Java programming language. The JDK includes tools useful for developing and testing programs written in the Java programming language and running on the Java TM  platform. Important Oracle JDK License Update The Oracle JDK License has changed for releases starting April 16, 2019. The new  Oracle Technology Network License Agreement for Oracle Java SE  is substantially different from prior Oracle JDK licenses. The new license permits certain uses, such as personal use and development use, at no cost -- but other uses authorized under prior Oracle JDK licenses may no longer be available. Please review the terms carefully before downloading and using this product. An FAQ is available  here . Commercial license and support is available with a

Windows | INVALID CLASS ERROR | CMD | SYSTEMINFO | DRIVERS | WMI | Windows Management Instrumentation service | Clase no valida | Cómo reparar WMI

 Windows | INVALID CLASS ERROR | CMD | SYSTEMINFO | DRIVERS Error cuando ejecuto aplicaciones o en el sistema Operativo: System.Management.ManagementException Invalid class Se debe realizar lo siguiente: Inicie el complemento WMI MMC en  Inicio  ->  Ejecutar  -> luego ingrese  WMIMGMT.MSC Haga clic con el botón derecho en  Control WMI (local)  y haga clic en  Propiedades Si WMI funciona correctamente, mostrará Buenas propiedades.  Si ve una  clase no válida,   entonces su WMI no está funcionando correctamente. Malo Bien Solución de problemas: Abrir cmd y ejecutar: sfc /scannow DISM /Online /Cleanup-Image /RestoreHealth Winmgmt.exe /standalonehost Winmgmt.exe /resetrepository winmgmt /resyncperf Una vez terminado, revise  WMIMGMT.MSC  para ver si está completando las Propiedades correctamente. https://techcommunity.microsoft.com/t5/ask-the-performance-team/wmidiag-2-2-is-here/ba-p/375642 Windows Management Instrumentation C:\WINDOWS\System32\wbem\Repository and delete its contents

SERVER | WINDOWS | Administración de HP Proliant DL ILO 4, 5 , 6 mediante PowerShell comandos

  A dministración de HP ILO mediante PowerShell Recientemente, Hewlett-Packard ha publicado un conjunto de 110 cmdlets de PowerShell que permiten a los administradores de Windows y a los profesionales de TI configurar y gestionar de forma remota las interfaces de HP ILO en servidores HP desde sistemas Windows.  Este conjunto de cmdlets se denomina  HP Scripting Tools para Windows PowerShell  y está diseñado para funcionar con HP iLO 3 e iLO 4. Los cmdlets están unidos en el  módulo  HPiLOCmdlets  y están destinados a: Buscar y escanear interfaces de la OIT en la red Acceso a la configuración de la OIT, que incluye: configuración de ip, usuarios de la OIT, administración de energía, registros, IML, etc. Capacidad para administrar varias placas iLO simultáneamente Puede descargar HP Scripting Tools para Windows PowerShell  aquí  .  Elija la versión y el valor de bits de su sistema (se admiten Windows 7 SP1, Microsoft Windows 8, Microsoft Windows Server 2008 R2 SP1 y Microsoft Windows Ser