martes, 23 de abril de 2013

Gestionar discos con Powershell



Powershell nos da suficiente potencial para poder gestionar el sistema operativo, entre otras cosas el poder trabajar con los discos duros. Veamos un ejemplo practico, tengo una máquina virtual (física también vale) a la que le añado un disco RAW y quiero inicializarlo, formatearlo y etiquetarlo en un script.
Lo primero que necesitamos es saber el número de disco que se ha generado al añadir el nuevo disco, para ello desde el PowerShell ejecutamos el comando Get-Disk.


Como se ve existe un disco con el numero 1 offline y de tipo RAW.

Aquí también podemos utilizar los filtros de powershell para que solo nos muestre el de tipo RAW. Usamos el comando get-disk |Where {$_.PartitionStyle -eq "RAW"}






Lo primero que deberemos hacer es inicializar el disco en formato MBR, para ello usamos el cmdlet Initialize-Disk -Number 1 -PartitionStyle MBR tal como se ve en la imagen.



Una vez inicializado debemos crear la partición y después formatearlo, para lo primero ejecutamos el comando New-Partition -DiskNumber 1 -UseMaximumSize


En el ejemplo anterior no le hemos asignado la letra de unidad que queremos ya que lo que vamos a hacer es montar este disco sobre una carpeta, si quisiéramos asignarle una unidad podíamos haberlo hecho al formatear la unidad añadiendo el flag –AssignDriveLetter.

Para formatearlo en NFTS dándole como etiqueta el nombre “Datos” primero vemos cual es el número de partición creada y luego lo formateamos con el comando Get-Partition -DiskNumber 1 | Format-Volume -FileSystem NTFS -NewFileSystemLabel "Datos" -Confirm:$false


Ahora nos queda montarlo sobre una carpeta de sistema, como ejemplo hemos creado una carpeta sobre el disco C:\ llamada Datos, para montar esta unidad sobre esta carpeta ejecutamos el comando Add-PartitionAccessPath -DiskNumber 1 -PartitionNumber 1 -AccessPath "C:\Datos"



Si vamos al explorador veremos cómo nos ha cambiado el icono de esta carpeta indicándonos que es un punto de montaje.


Obviamente podemos utilizar estos cmdlets para crearnos un script que lo haga todo, incluso localizar el disco que acabamos de asignar.
Aquí os dejo un ejemplo de un script que busca el primer disco RAW disponible lo inicializa y formatea con la siguiente unidad disponible, permite pasarle como parametro el label del nuevo disco.



# - Script que busca un disco libre lo inicializa, lo formatea, le pone la etiqueta que
# - le pasamos como parametro -Label y lo monta en la siguiente unidad libre.
[CmdletBinding()]
Param (
 [Parameter (Mandatory=$True, Position=1)]
 [String]$Label
 )
# -- Variables a usar
$NDisco=""
# -- Convierto a mayusculas la etiqueta pasada (mania mia)
$Label=$Label.ToUpper()
# -- Comprueba si hay discos disponibles
 
$NDisco=@(Get-Disk | where {$_.PartitionStyle -eq "RAW"} |Sort-Object Number)
if ($NDisco.count -gt 0 )
{
 # - Hay más de un disco.
 # -- Inicializo.
 Initialize-Disk -Number $NDisco[0].Number -PartitionStyle MBR
 # -- Creo la partición
 $Particion=New-Partition -DiskNumber $NDisco[0].Number -UseMaximumSize -AssignDriveLetter
 # -- Formateo la partición
 Start-Sleep -Seconds 3
 $Particion | Format-Volume -FileSystem NTFS -NewFileSystemLabel $Label -Confirm:$false
 # -- Ya está
 Write-Host "Disco creado"
 }
else {
 Write-Host "No hay discos disponibles"
}

 
 

lunes, 11 de marzo de 2013

Instalación de Exchange 2010 SP3 en 2012 versión 2

Hola otra vez, en la entrada anterior http://elblogdeayllon.blogspot.com.es/2013/02/instalacion-de-exchange-2010-sp3-en.html explicaba mi experiencia para poder instalar un Exchange 2010 SP3 en un servidor con Windows Server 2012. En el momento de redactar ese blog Microsoft todavía no había publicado los pre-requisitos necesarios para poderlo hacerlo así que, lo hice basado en mi experiencia.

Lo cierto es que he comprobado que en la página http://technet.microsoft.com/en-us/library/bb691354%28v=exchg.141%29.aspx ya nos aparecen los pre-requisitos para poder instalar esta versión de Exchange sobre Server 2012. Mi sorpresa ha sido que al probarlo da un error de PowerShell porque no se le ha añadido la opción source y no puede encontrar los archivos de instalación.

Para solucionar esto hemos de hacer lo que ya indicaba en el post anterior o seguir otro procedimiento que he encontrado.

El procedimiento lo que nos permite es habilitar esta opción antes de lanzar el comando que aparece en la web de Microsoft. Lo que demos hacer es tener acceso al DVD de la instalación del Windows Server 2012 bien poir DVD físico o montando la ISO. En mi ejemplo está montado sobre la unidad D:

Desde PowerShell ejecutamos el comando:

dism /online /enable-feature /featurename:NetFX3 /all /Source:D:\sources\sxs /LimitAccess
  

Y ahora si que podemos lanzar el comando que aparece en la página de pre-requisitos de Exchange 2010 que he citado antes sin tener que añadir nada.

Espero que esto os haya ayudado.