pcampos blogs

Posteando mis ideas para no olvidarlas
Tremendo anuncio de MSFT sobre Virtualización

Simplemente les comentare las grandes áreas

  • Hyper-v Dynamic Memory se agregara en WS2008 R2 Sp1  AL FIN
  • XP mode no necesitara virtualizacion asistida por HW intel VT o amd-v –> Genial para las empresas que no tienen $$$$ para CPUs con estas tecnologias
  • Una mejor experiencia de usuario en VDI WS2008 R2 Sp1 RemoteFX

Noticia Original
http://www.microsoft.com/Presspass/press/2010/mar10/03-18DesktopVirtPR.mspx

Posted: 18/3/2010 17:23 por Pablo | con 1 comment(s)
Archivado en:
La maquina virtual no se puede iniciar porque el Hypervisor no esta en Ejecución

Hola a todos. Después de estar jugando un poco con mi Windows Server 2008 con Hyper-v para hacerlo bootear desde un VHD me ocurrió el siguiente error al tratar de iniciar una máquina

La maquina virtual no se puede iniciar porque el Hypervisor no esta en Ejecución

image

Tenemos 3 opciones

1.- El hardware no es el adecuado.
R.- 100% Seguro que es el adecuado, ya que lo tenía funcionando hace menos de 1 hora

2.-Habilitación de Intel-vt y DEP faltantes en la BIOS o HARD reset
R.- 100% Seguro que es el adecuado, ya que lo tenía funcionando hace menos de 1 hora

3.-Modificación del almacén de datos de arranque
R.- ESTO SI QUE LO MODIFIQUE 

Ojo que la herramienta de Startup Rapair igualmente modifica el almacén de datos de arranque

image

Entonces miremos que es lo que tenemos en el cargador de arranque de Windows

C:\>bcdedit /v

Cargador de arranque de Windows
-----------------------------
Identificador           {ffe86a89-97eb-11de-88e4-8d9d20f53a42}
device                    vhd=[D:]\2008x64BaseR2.vhd,locate=custom:12000002
path                       \Windows\system32\winload.exe
description              VHD hyper-v Server
locale                     es-ES
inherit                    {6efb52bf-1766-41db-a6b3-0ee5eff72bd7}
recoverysequence   {ffe86a82-97eb-11de-88e4-8d9d20f53a42}
recoveryenabled      Yes
osdevice                 vhd=[D:]\2008x64BaseR2.vhd,locate=custom:22000002
systemroot              \Windows
resumeobject          {ffe86a80-97eb-11de-88e4-8d9d20f53a42}
nx                           OptIn
hypervisorlaunchtype    Off
detecthal               Yes

 

Esta clarisimo cual es el error, el valor del campos hypervisorlaunchtype    esta en Off, el cual debe ser cambiado a Auto

Ejecutamos el comando ….. y listo

C:\>bcdedit /set {ffe86a89-97eb-11de-88e4-8d9d20f53a42} hypervisorlaunchtype  Auto
La operación se completó correctamente.

Reiniciamos y todo OK.

Salu2

Posted: 11/3/2010 13:28 por Pablo | con 1 comment(s)
Archivado en:
Delegación de Permisos AZMAN en Hyper-v cuando los host están manejados por System Center Virtual Machine Manager

Hola a todos

Después de postear la Parte 1, 2 y 3 sobre la correcta delegación de permisos, ahora nos enfrentamos al desafío de hacer exactamente lo mismo, el problema es que ahora nuestros host son manejados por System Center Virtual Machine Manager  y el sistema de delegación  de permisos ya no lo maneja el Hyper-v con el archivo InitialStore.XML, sino que ahora los maneja el archivo HyperVAuthSore.XML.

El problema es que el SCVMM reescribe los Alcances de las maquinas virtuales por defecto cada “15” minutos aproximadamente, con lo cual nuestras maquinas virtuales que les creamos Scopes personalizados con el script SetScope.vbs ya no nos sirven para nada.

Recreemos la problemática

Tengo un dominio llamado PRUEBA el cual tiene un usuario común y corriente llamada PRUEBA\pcamposs , al cual le quiero delegar el control solo de la maquina W7 y no de todo el listado de las maquinas virtuales que les muestro a continuación

image

Entonces abro el azman.msc y cargo el archivo XML llamado  C:\ProgramData\Microsoft\Virtual machine Manager\HyperVAuthSore.XML

Y me creo un Scope llamado Test al cual dejo como administrador a PRUEBA\pcamposs

image

Ahora trato de conectarme desde mi maquina remota que tiene Windows 7 con RSAT como el usuario PRUEBA\pcamposs

image

Pero me dice que no se encontraron maquinas virtuales, eso sucede porque no tengo asociadas maquinas virtuales al Scope Test

Ahora uso el Script SetScope.vbs para asociar una maquina virtual llamada W7 al Scope Test

SetScope.vbs W7 Test

Ahora Quiero ver que Scope tiene con el Script GetScope.vbs

GetScope.vbs W7

image

Perfecto ahora mi maquina W7 pertenece al Scope de Seguridad Test

Ahora Actualizo mi maquina cliente con Windows 7 como el usuario PRUEBA\pcamposs y PEFECTO !!!!!! solo veo la maquina W7

image

Entonces al Parecer todo esta bien…. pero después de un rato….
”No se encontraron maquinas Virtuales en este Servidor”…. Entonces que paso ….

image

Uso nuevamente el comando GetScope.vbs y SORPRESA

GetScope.vbs W7

image

Ahora la maquina Virtual W7 pertenece a su Scope por defecto, el cual no tiene ningún tipo de delegación de permisos.

¿ Cual es la solución ?

Microsoft para este problema no tiene una solución documentada, la solución que presento a continuación no es oficial, pero la he probado y funciona de maravillas.

Manos a la obra

Lo primero que tenemos que hacer es examinar el registro HKLM\Software\Microsoft\Windows NT\CurrentVersion\Virtualization

Y cambiar los valores que modifico el SCVMM por los anteriores, con esto el sistema de delegación de permisos lo manejara nuevamente el Hyper-v con el archivo InitialStore.XML

image

Entonces cambiamos primero el valor

StoreLocation y le asignamos el valor que esta en VmmPreviousStoreLocation
msxml://C:\ProgramData\Microsoft\Windows\Hyper-V\InitialStore.xml

ServiceApplication y le asignamos el valor que esta en VmmPreviousApplication
Hyper-V services

Reiniciamos y listo :)

Saludos a todos

Posted: 9/3/2010 18:19 por Pablo | con no comments
Archivado en: ,
Apagar Maquinas Virtuales para Compactar sus VHDs

Hola a todos

Una de las cosas entretenidas de la Virtualizacion es el manejo de los espacios disponibles, en este aspecto están los discos duros de expansión dinámica… “OJO ESTO NO ESTA RECOMENDADO EN PRODUCCION” … Estos discos tienen la capacidad de crecer dinámicamente, pero no de decrecer.

Ej: Si usted tiene un Disco Dinámico de 128 GB y realmente tiene usado de ese disco 10GB .. en el disco del Host Hyper-v Solo ocupa 10GB.

El problema principal radica cuando borramos 4GB de nuestro duro dinámico. La maquina virtual creara que tiene ahora ocupado solo 6GB (10GB-4GB) pero en el host de Hyper-v el disco sigue ocupando 10GB….

Para solucionar este problema se pueden compactar los discos con las herramientas de Hyper-v, pero hay que obviamente  apagar la maquina virtual.

Para automatizar este proceso podemos hacer un lindo script con powershell, el cual :

1)Apagara la VMs “debe tener los ICs instalados”
2)después compactara el disco
3)Después prendera la maquina

Le debemos decir la el nombre de la Vm y la ruta del VHD

$MasterVM="2003AS"
$VHDName = "D:\dataServer2008\discos\2003AD-Difl.vhd"

----------------------------------------------------------------------------------------------------------

$MasterVM="2003AS"
$Vm = Get-WmiObject -Namespace root\virtualization  -Query "Select * From Msvm_ComputerSystem Where ElementName='$MasterVM'"
$ShutdownIC = Get-WmiObject -Namespace root\virtualization  -Query "Associators of {$Vm} Where AssocClass=Msvm_SystemDevice ResultClass=Msvm_ShutdownComponent"
$ShutdownIC.InitiateShutdown("TRUE", "Need to shutdown")

while ($job.JobState -eq 3 -or $job.JobState -eq 4) 
{
    write-host "Apagando. "$job.PercentComplete "% complete" 
    start-sleep 1 
    $job=[WMI]$Result.job
}

$VHDName = "D:\dataServer2008\discos\2003AD-Difl.vhd"

$ImageManagementService = gwmi Msvm_ImageManagementService -namespace "root\virtualization"
$result = $ImageManagementService.CompactVirtualHardDisk($VHDName)
$job=[WMI]$Result.job
while ($job.JobState -eq 3 -or $job.JobState -eq 4) 
{
    write-host "Compacting. "$job.PercentComplete "% complete" 
    start-sleep 1 
    $job=[WMI]$Result.job
}
$SourceVm.RequestStateChange(2)

----------------------------------------------------------------------------------------------------------

Si alguien lo quiere mejorar, sacando un listado de todas las Vms X Host y la ruta de sus discos ….. Bienvenida sea … cuando llegue de mis vacaciones lo mejorare

 

salu2

Posted: 13/2/2010 16:48 por Pablo | con no comments
Archivado en: ,,
Seguridad en Hyper-V : Administrador de autorización para su correcta delegación “Parte 3” Y FINAL !!!!!!!!

Hola a todos

En esta parte 3 y final veremos como delegar el control granular de ciertas maquinas a nuestro usuario tipo “CAPACITA\pablocampos” 

1.. LA PROBLEMATICA

El problema es que si le delegamos el control a “CAPACITA\pablocampos” de nuestro host de Hyper-v, el podrá ver todas las VMS de ese host, cosa que yo como admin no quiero, entonces que podemos hacer.

Para delegar el control de forma mas granular crearemos un nuevo ámbito llamado “Ambito de Prueba” en el cual asignaremos a “CAPACITA\pablocampos” como administrador en este ámbito

 Captura5

Después de esto debemos asignar las maquinas virtuales a este ámbito, para esto usaremos unos scripts que están disponibles en este sitio al final abajo BackupVMsAndScopeScripts.zip 

En una consola con permisos de administrador ejecutamos el script SetScope.vbs, en el cual como primer parámetro debemos pasar el nombre de la maquina virtual y como segundo parámetro debemos pasar el nombre del ámbito

cscript SetScope.vbs “Core” “Ambito de Prueba”
cscript SetScope.vbs “2008 AD” “Ambito de Prueba”

Captura6

El resultado de este comando debería ser un XML donde al final abajo debería salir un “cero” 0 , el cual indica que el proceso fue exitoso

De igual manera pueden utilizar el Script GetScope.vbs para ver a que ambito pertenece cada maquina

Captura9

En mi caso asigne al “Ambito de Prueba” mis maquinas llamadas “Core” y “2008 AD”

Tratamos de conectarnos al servicio de hyper-v yyyyyy no vemos nada :(

Captura2

El problema es que el usuario debe tener los permisos de lectura del Servicio de Hyper-v a nivel de Raíz, para lo cual crearemos en la raíz una nueva definición de rol llamada “Servicios” a la cual le asignaremos las siguientes operaciones

100 - Read Service Configuration
105 - Reconfigure Service

Captura3

Y asignaremos a nuestro usuario “CAPACITA\pablocampos” a este rol

Captura4

OJO RECUEREN QUE ESTO LO DEBEN HACER FUERA DEL AMBITO EN LA RAIZ

Despues de eso asignamos como administrador del ambito “Ambito de Prueba” al usuario “CAPACITA\pablocampos” y tratamos nuevamente de conectarnos a la consola del hyper-v yyyyy????

Captura7

Ahora “CAPACITA\pablocampos” solo puede ver las maquinas “Core” y “2008 AD”

Nos conectamos como administradores y vemos la consola FULL

Captura1

Les dejo un pantallazo de la consola del administrador y la de  “CAPACITA\pablocampos” juntas

Captura8 

Saludos

Posted: 26/1/2010 13:59 por Pablo | con 3 comment(s)
Archivado en:
Seguridad en Hyper-V : Administrador de autorización para su correcta delegación “Parte 2”

Después de al anterior post ahora nos queda solamente probar si todo anda bien.

Desde un Cliente con Windows 7 Unido a un dominio, Instalamos las Herramientas de Administración Remota de Servidores RSAT para Windows 7.

Después simplemente abrimos el “Administrador de Hyper-v” con la cuenta de usuario que le delegamos el control el el post anterior ej : CAPACITA\pablocampos

Usaremos la opción de ejecutar como otro usuario…. ojo que si no ves ese menú, mantén presionado la tecla SHIFT y le das con el botón derecho del mouse al “Administrador de Hyper-v” y aparecerá

image image

Ahora en el administrador del hyper-v, en el menú derecho seleccionamos “Conectar al Servidor” y escribimos el nombre de nuestro Servidor…”Servidor1” y presionamos aceptar

image

Pero lamentablemente al conectarnos nos envía un muy feo error

“No dispone de los permisos necesarios para completar esta Tarea. Póngase en contacto con el administrador de la directiva de autorización del equipo”

image

Pero si el la parte 1 de este post me enseñaron a configurar bien la delegación con azman?????

El problema es que los usuarios “comunes y corrientes” para administrar remotamente un host de hyper-v, debes tener algunos privilegios y pertenecer a un grupo especifico

Primero agregamos a nuestro usuario CAPACITA\pablocampos al grupo local  de
“Usuarios COM Distribuidos”

image

Ahora debemos concederle permisos especiales de conexión dentro del Control WMI. Le damos clic derecho con el mouse en “Control WMI” y seleccionamos Propiedades

image

Una vez dentro del Control WMI seleccionamos la pestaña “seguridad”, Expandimos Root y seleccionamos CIMV2 y presionamos el botón Seguridad

image

Después Pinchamos “Opciones avanzadas” y veremos la siguiente pantalla sonde presionaremos el botón Agregar y buscaremos al usuario CAPACITA\pablocampos.

image

Una vez seleccionado el usuario procederemos a seleccionar la opción aplicar a “Este espacio de nombre y espacio de subnombre”, además debemos dejar seleccionadas las opciones
Habilita Cuenta y Llamada remota habilitada
No olvidar habilitar la casilla “Aplicar estos permisos solo ………”

 image

Después aplicar aceptar aceptar aceptar :)

Después debemos realizar los mismos pasos anteriores solo que ahora en el Contenedor de “Virtualization”

 image

Ahora Probamos si nos podemos conectar con la MMC de hyper-v …..

image

 

Conectado satisfactoriamente….

Ahora si trato de cambiar el estado de una amquina virtual … por ejemplo Guardar Estadio “Save State”

image

Con lo cual queda demostrado la correcta delegación de permisos

Saludos

Posted: 11/1/2010 11:11 por Pablo | con 2 comment(s)
Archivado en:
Seguridad en Hyper-V : Administrador de autorización para su correcta delegación “Parte 1”

Hola a todos, después de montar exitosamente varios server con Hyper-v, ahora toca la no menor tarea de la administración y delegación del control del host de Maquinas Virtuales, tarea la que no es sencilla de hacer  y requiere de conocer bien ciertos términos.

AzMan es una función de control de acceso basado en roles (RBAC) la cual proporciona una herramienta administrativa para gestionar la política de autorización que permite a las aplicaciones realizar comprobaciones de acceso en contra de esa misma política.

La herramienta de administración AzMan (azman.msc) se suministra como una Microsoft Management Console (MMC), la cual carga un archivo XML que contiene la configuración de delegación de  control de nuestro hyper-v.

El archivo XML tiene como nombre InitialStore.XML la ubicación en un host con hyper-v es

C:\ProgramData\Microsoft\Windows\Hyper-V\InitialStore.XML

Recuerde que si usted tiene instalado System Center Virtual Machine Manager la ubicación por defecto cambia

C:\ProgramData\Microsoft\Virtual machine Manager\HyperVAuthSore.XML

Si quiere estar seguro donde esta el archivo XML siga esta ruta del registro

HKLM\Software\Microsoft\Windows NT\CurrentVersion\Virtualization

image

Ahora vemos el valor de StoreLocation

image

 

 

Después de encontrar nuestro XML de configuración procedemos a abrir la aplicación azman.msc y cargar nuestro archivo XML  InitialStore o HyperVAuthSore

image image

Como podemos ver en la siguiente imagen Existe contenedores de Definiciones de rol, definiciones de Tareas y Asignación de Roles.
Mas abajo se ven contenedores con IDs que realmente se llaman Ámbitos, los cuales los explicaremos mas adelante

image

Basado en Roles, la directiva de autorización de acceso se especifica basándose en los roles de usuario, los cuales reflejan los requisitos de autorización de una aplicación especifica.
Los usuarios se asocian a los roles basados en sus funciones de trabajo y a estos roles se les otorgan los permisos necesarios para realizar tareas relacionadas.
Los administradores usan el complemento AzMan para administrar las funciones que deben tener acceso a las tareas.
A medida que el negocio evoluciona, las funciones deben ser modificadas, el administrador realiza cambios en la política de autorización, la aplicación empresarial subyacente no necesita ser cambiado.

Comencemos explicando de lo mas general a lo mas especifico

Alcance “Scope”: Un alcance le permite definir que objetos son propiedades de que rol. Si tienes un sistema donde quieres conceder derechos administrativos a solo un par de maquinas virtuales de un host hyper-v a un usuario especifico, debería crear un alcance para esas maquinas virtuales y aplicar los cambios de configuración  solo a ese ámbito

Roles : Un rol define un trabajo o responsabilidad que se lleva a cabo por un usuario. Por ejemplo, “Administrador_de_Redes”. Este rol debería tener todas las operaciones relacionadas con la administración de redes virtuales. Entonces este rol se le asignará a ciertos usuarios según corresponda.

Tareas: Las tareas un un conjunto de operaciones

Operaciones: Esta es la parte mas básica de la administración de autorización, y representa alguna acción que puede ser realizada por un usuario. Ejemplo:
“Start Virtual Machine”

Comenzaremos viendo las Tareas

En el menú izquierdo del azman veremos varios contenedores, entre los cuales de encuentra definiciones, tanto de rol como de Tarea.

Daremos click derecho con el mouse sobre definición de tarea y seleccionaremos “Definición de Nueva Tarea”

image
Ahora creamos una nueva tarea llamada “Tarea de solo Conexión”, le ponemos una descripción y presionamos el botón agregar

image

En esta pantalla seleccionamos la pestaña operaciones donde saldrá el listado completo de operaciones delegables sobre el Hyper-v. Nosotros elegiremos sólo las operaciones necesarias para poderse conectar y ver las maquinas virtuales

Allow Input to Virtual Machine
Allow Output from Virtual Machine
Read Service Configuration

Ahora simplemente aceptar

image image

Les dejo el listado con sus respectivos ids de todas las operaciones :)

100 - Read Service Configuration
105 - Reconfigure Service
200 - Create Virtual Switch
205 - Delete Virtual Switch
210 - Create Virtual Switch Port
215 - Delete Virtual Switch Port
220 - Connect Virtual Switch Port
225 - Disconnect Virtual Switch Port
230 - Create Internal Ethernet Port
235 - Delete Internal Ethernet Port
240 - Bind External Ethernet Port
245 - Unbind External Ethernet Port
250 - Change VLAN Configuration on Port
255 - Modify Switch Settings
260 - Modify Switch Port Settings
265 - View Switches
270 - View Switch Ports
275 - View External Ethernet Ports
280 - View Internal Ethernet Ports
285 - View VLAN Settings
290 - View LAN Endpoints
295 - View Virtual Switch Management Service
300 - Create Virtual Machine
305 - Delete Virtual Machine
310 - Change Virtual Machine Authorization Scope
315 - Start Virtual Machine
320 - Stop Virtual Machine
325 - Pause and Restart Virtual Machine
330 - Reconfigure Virtual Machine
335 - View Virtual Machine Configuration
340 - Allow Input to Virtual Machine
345 - Allow Output from Virtual Machine
350 - Modify Internal Ethernet Port
355 - Allow Virtual Machine Snapshot

Ahora veremos los Roles

Daremos clic derecho con el mouse sobre definición de rol y seleccionaremos “Nueva definición de rol”

image
Crearemos una definición de rol llamada  “Solo Conectar”, la cual habilitara a los usuarios para conectarse a la consola MMC del hyper-v y ver todas las VMS y poder entrar en ellas, OJO que estos usuarios no pueden cambiar la configuración de esas maquinas ni las pueden apagar, iniciar,guardar ,exportar etc

image

Presionamos Agregar y podemos seleccionar otro rol, tareas u operaciones

En nuestro caso le agregaremos la tarea anteriormente creada “Tarea de solo Conexión”

image

Asignando usuarios a nuestro Rol

Ahora ya tenemos listo nuestra definición de Rol y nuestra definición de tareas, lo único que nos falta es la asignación de Roles, para esto seleccionaremos con el botón derecho del mouse sobre “Asignación de roles” y seleccionaremos “Nueva Asignación de roles”

image

En esta sección obviamente seleccionaremos nuestro Rol Creado con anterioridad
“Solo Conectar”

image image

Ahora solo nos queda seleccionar nuestros usuarios y asignarlos al Rol “Solo Conectar”

Damos clic derecho del mouse sobre el rol “solo conectar” y seleccionamos “Asignar usuarios y grupos”  -> “de Windows y Active Directory” y seleccionamos al usuario indicado para realizar esta delegación

image

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

Los espero en la Parte 2 donde solucionaremos posibles problemas de conexión mediante la MMC de hyper-v

La parte 3 se tratara específicamente de como delegar el control de solo un subconjunto de maquinas virtuales

Y la parte 4 y final veremos que pasa si se nos corrompe o borra nuestro archivo XML  InitialStore.XML

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

Posted: 7/1/2010 11:25 por Pablo | con 5 comment(s)
Archivado en:
Desaparecieron las Maquinas Virtuales del hyper-v Manager HELP !!!!!!!

Al iniciar el administrador de maquinas virtuales vi que me faltaban dramáticamente 5 maquinas virtuales. Pero desde otro servidor ya estaba logeado hace días a un administrador de maquinas virtuales sonde si estaban, pero al tratar de modificarlas o iniciarlas me enviaba el siguiente error

The requested operation cannot be performed on a file with a user-mapped section open. (0x800704C8)

Como estaba desesperado …. cree nuevamente las maquinas virtuales y les adjunte los discos duros… configure la red y listo.

Pero que ocurrió realmente

El problema fue mi muy querido antivirus Trendmicro Office Scan que escanea los XML de configuración de las maquinas virtuales y los deja dañado … “que lindo no????”

Después de ver los archivos con el internet explorer me di cuenta que los xmls estaban malos …

image

Abrí el XML y no pille el error es ese sector pero mas abajo … chachaannnn

----------------------------------------------------------------------------------------------------------

    <processors>
      <count type="integer">2</count>
      <limit type="integer">100000</limit>
      <reservation type="integer">0</reservation>
      <weight type="integer">100</weight>
    </processors>
    <stopped_at_host_shutdown type="bool">True</stopped_at_host_shutdown>
  </settings>
</configuration>type="integer">1024</size>
      </bank>
    </memory>
    <processors>
      <count type="integer">2</count>
      <limit type="integer">100000</limit>
      <reservation type="integer">0</reservation>
      <weight type="integer">100</weight>
    </processors>
    <stopped_at_host_shutdown type="bool">True</stopped_at_host_shutdown>
  </settings>
</configuration>

-------------------------------------------------------------------------------------------------------

Al parecer el antivirus agrego un par de líneas de código al final del XML… elimine las líneas en rojo y listo ….

 

Salu2

Posted: 28/12/2009 11:26 por Pablo | con 2 comment(s) |
Archivado en:
Grabación Livemeeting de la conferencia de Powershell

Hola a todos, les dejo las dos partes de la conferencia de PowerShell, para los que no pudieron ir y especialmente para los de regiones

Conferencia Técnica TechNet: Simplificando las tareas de administración mediante el uso de Powershell, powerShellIcon

Primera Parte

Segunda Parte

PowerShell Remoting básico

Hola a todos después de la charla de PowerShell en Microsoft me comprometí con subir los ejemplos de powershell remoting. asiq comencemos

Primero que todo deben habilitar la función de remoting con el comando

Enable-PSRemoting

image

Después de esto ya estamos listos para comenzar a invocar comandos de manera remota.

Recuerden que si están en un entorno con dominio de Active Directory y su cuenta tiene derechos sobre el computador de destino, todo funcionara OK, de lo contrario nos enviara un mensaje de acceso denegado, para solucionar ese problema usaremos el cmdlet
get-credential y lo pasaremos como parámetro.
Imaginemos que mi dominio se llama capacita.local

$credencial=Get-Credential CAPACITA\Administrador

image

Ahora si queremos invocar un cmdlet remoto solo debemos ejecutar el comando

Invoke-Command -ComputerName SERVIDOR01 -Credential $credencial
-ScriptBlock {Get-Process}

El cmdlet Invoke-Command abre una sesión el el servidor01 con las credenciales almacenadas en la variable $credencial , luego ejecuta todo lo que este dentro de las llaves del parámetro –ScriptBlock, que en este caso es el cmdlet Get-Process y lo muestra por pantalla.

El problema es que con el cmdlet Invoke-Command se abre y cierra una sesión, esta no es persistente y no guarda el estado de posibles variable, para esto debemos crear una nueva sesión y usarla como parámetro

$sesion1=New-PSSession -ComputerName SERVIDOR01 -Credential $credencial

Ahora tenemos en la variable $sesion1 una sesión abierta hacia el computador SERVIDOR1

Invoke-Command -Session $sesion1 -ScriptBlock {Get-EventLog -logname system -Newest 5}

Lo anterior trae los 5 últimos logs de sistema del SERVIDOR1

La mejor manera de comprobar que realmente esta sesión es persistente es hacer una variable local y incrementarla en cierto valor ejecutándola remotamente

EJ:

Variable local: $paso

$paso= {$total += 5;$total}

Invoke-Command -Session $sesion1 -ScriptBlock $paso

El primer valor seria 5, después 10, después 15 y así sucesivamente , con esto podemos probar que el estado de las variables se conserva :)

Imaginemos que nuestro servidor remoto esta corriendo un proceso llamado notepad :) y nosotros de nuestra estación de trabajo lo queremos detener

Invoke-Command -Session $sesion1 -ScriptBlock {Stop-Process -name  notepad}

Ahora si queremos trabajar directamente en el servidor remota en una consola de PS, solo debemos entrar a esta con el comando

Enter-PSSession -ComputerName SERVIDOR01 -Credential $credencial

Con esto entramos a una sesión interactiva remota de powershell

Saludos

[PPTs] Powershell para administradores MSFT
[Evento] Chile: Conferencia Técnica TechNet: Simplificando las tareas de administración mediante el uso de Powershell

 powerShellIconLa administración de los servicios mediante interfaces gráficas o GUI ha sido uno de los grandes avances de los sistemas operativos, sin embargo cuando las tareas son muy complejas y operan sobre un conjunto grande de objetos o recursos del sistema, bien vale la pena tener a mano un  buen scripting que automatice este proceso.
En esta charla Pablo Campos y Alejandro Pacheco introducen las nuevas características de Powershell y muestran  algunos ejemplos prácticos de servicios y aplicaciones que pueden administrarse mediante el uso del mismo.
Oradores: Pablo Campos y Alejandro Pacheco

INFORMACION IMPORTANTE: - Este evento no incluye el pago de estacionamientos en el edificio. - Microsoft se reserva el derecho de utilizar los espacios disponibles, Una vez comenzado el evento

Producto: Microsoft technologies, Windows PowerShell
Idioma: Español
Audiencia: Generalista de IT

Microsoft Chile : Mariano Sanchez Fontecilla 310, Piso 6  Las Condes Santiago

REGISTRATE AQUI

OJO En este Mismo Blog estaré subiendo los demos de la charla del Martes 15

PPTSx Windows Server 2008 R2 Los Angeles
Posted: 6/12/2009 21:35 por Pablo | con no comments
Archivado en: ,
Booteo Nativo de VHD con Powershell y Windows 7

Hola a todos
Quizás este post no es muy novedoso, pero después de varios intentos infructuosos siguiendo manuales me decidí a hacer uno yo :)

Primero que todo tiene que tener a mano el DVD de Windows Server 2008 o Windows 7

Descargar un script de Powershell desde http://code.msdn.microsoft.com/InstallWindowsImage

Manos a la obra

1) Nos creamos un disco Duro VHD de unos 10 GB para probar de expansión dinámica

a)Desde el administrador de Discos seleccionamos “Crear VHD

image
b) Le damos la ruta EJ: H:\2008VHD.vhd de 10GB de expansión Dinámica

image

c) Inicializamos el disco y lo formateamos
image image

Como se dan Cuenta quedo NTFS en la letra F:

d) ahora ocupamos nuestro archivo descargado de PowerShell
Install-WindowsImage.ps1

OJO que el powershell lo deben ejecutar como administrador

Si al ejecutar el script ven el siguiente error es por la seguridad de ejecución de los scripts en powershell

image

Para solucionar el problema cambie se seteo de ejecución de scripts con el comando Set-ExecutionPolicy Unrestricted

e) Ahora inserte el DVD de Windows 7 “en mi caso G:”

.\Install-WindowsImage.ps1 -WIM G:\sources\install.wim

Con esto nos deberia mostar la lista de sistema operativos con indices que puede cargar este dvd.

Index   Image Name
[1]     Windows 7 Enterprise

Done.

En el caso de Windows Server 2008 R2

Index   Image Name
[1]     Windows Server 2008 R2 Standard (Full Installation)
[2]     Windows Server 2008 R2 Standard (Server Core Installation)
[3]     Windows Server 2008 R2 Enterprise (Full Installation)
[4]     Windows Server 2008 R2 Enterprise (Server Core Installation)
[5]     Windows Server 2008 R2 Datacenter (Full Installation)
[6]     Windows Server 2008 R2 Datacenter (Server Core Installation)
[7]     Windows Web Server 2008 R2 (Full Installation)
[8]     Windows Web Server 2008 R2 (Server Core Installation)

Done.

Ahora que ya tenemos el índice [1] del sistema operativo y la ruta del archivo WIM podemos “Aplicarlo” en el disco VHD que creamos hace un rato F:

.\Install-WindowsImage.ps1 -WIM G:\sources\install.wim -Apply -Index 1 –Destination F:\

Applying "Windows 7 Enterprise" to F:\...
ADVERTENCIA: This may take up to 15 minutes...

_________________________________________________________________________________
EDITADO 10/12/2009 … Si quieres que tu VHD pueda bootear desde el Virtual PC o Hyper-v debes cargar el bcdboot en el disco montado

Sigamos pensando que nuestro disco VHD lo tenemos montado en F:

Ejecutamos el siguiente comando

F:\windows\system32\bcdboot F:\windows /s F:

Si después queremos borrar algo que nos quedo mal en el Bcdedit

bcdedit /delete {ID}

Donde ID es el id de la entrada que quieres borrar

bcdedit /delete {ffe86a97-97eb-11de-88e4-8d9d20f53a42}

_________________________________________________________________________________

Listo… Ahora solo debemos modificar el booteo de nuestro sistema para que arranque con el vhd, para eso ocuparemos el comando bcdedit “como administrador”

Bcdedit /copy {current} /d “Win7VHD”
La entrada se copió correctamente en {ffe86a96-97eb-11de-88e4-8d9d20f53a42}
Con este comando copiamos la entrada de boteo actual de nuestro SO a una llamada Win7VHD, ahora debemos modificar los parámetros device y osdevice para que arranque por el VHD

bcdedit /set {ffe86a96-97eb-11de-88e4-8d9d20f53a42} device vhd=[H:]\2008VHD.vhd

bcdedit /set {ffe86a96-97eb-11de-88e4-8d9d20f53a42} osdevice vhd=[H:]\2008VHD.vhd

image

Escribimos bcdedit para ver si esta todo OK

image

Reiniciamos y Listo

Les dejo un par de fotos del booteo… “las saque con el teléfono y me reflejo en la pantalla ”

IMG_0510 IMG_0511 IMG_0512 IMG_0513 IMG_0514 IMG_0515 IMG_0516 IMG_0517

Posted: 3/12/2009 17:57 por Pablo | con 2 comment(s)
[Evento] Chile – Los Ángeles VIII Región

Hola a todos, este viernes 4 estaremos dando un montón de charlas en la ciudad de los Ángeles, esto es para todos los que dicen que nunca se hacen cosas fuera de Santiago…
“yo soy de Concepción :)”

ACTUALIZADO: El Hotel queda al lado del casino de Los Ángeles, la dirección es Colo Colo #565

10:30 - 10:40 | Bienvenida
10:45 - 11:30 | Max + Brede :- Introducción a Windows 7 + Demos de Seguridad Infantil.
11:30 - 12:15 | Pablo : Win Server 2008 R2
12:15 - 13:00 | Gonzalo: "Que es lo nuevo de ASP.NET 4.0"
14:00 - 14:45 | Ale: ASP.NET y silverlight
14:45 - 15:30 | Gonzalo: "Desarrollando Aplicaciones compatibles con Windows 7"
15:30 - 16:10 | Brede: IIS, PHP y SQL Server como buenos amigos
16:15 - 17:00 | Pablo: "Windows Deployment services con Windows 7"
17:00 - 17:45 | Francisco: silverlight

Max = Maximiliano Marin: Microsoft Student Partner
Pablo = Pablo Campos :MCP MCTS, Instructor Certificado Microsoft   YO :)
Ale = Alejandro Pacheco : Gerente de Relaciones Académicas, Microsoft Chile
Brede = Brede Basualdo: Microsoft Student Partner
Francisco : Francisco Agurto : Microsoft Student Partner
Gonzalo: Gonzalo "Chalalo" Pérez , Microsoft MVP ASP/ASP.NET

Posted: 2/12/2009 8:41 por Pablo | con no comments
Configuración del tamaño de la pantalla de Suse 10 en Linux Durante la Instalación en Hyper-v

Hola a todos, después del ScreenCast de Hyper-v y Linux, un usuario llamado Cesar me realizó un comentario sobre cambiar la resolución de la pantalla de la instalación antes de comenzarla, ya que durante la instalacion de suse 10l a pantalla quedaba a 1280x1024 o algo por el estilo, lo cual hacia muy complejo una instalacion tranquila y me envió la foto en la cual me muestra como configurar suse 11

3574275suse[1]

El problema es que esa es para Suse 11, y yo tenia Suse 10, el cual en su BootScreen es solo modo Texto

image

Entonces como cambiar ala resolución de la pantalla antes que comience la instalación ?????

Encontré esta tablita muy interesante y se puede pasar como parámetro al proceso de instalación

Depth 800×600 1024×768 1152×864 1280×1024 1600×1200
8 bit vga=771 vga=773 vga=353 vga=775 vga=796
16 bit vga=788 vga=791 vga=355 vga=794 vga=798
24 bit vga=789 vga=792   vga=795 vga=799

Entonces lo único que falta por hacer es pasar como parámetro la resolución que mas nos guste

EJ:
linux vga=788

Y cuando arranquemos Suse 10 el proceso de instalación quedara en 800x600 a 16 bits

image

Saludos :)

Posted: 17/11/2009 10:19 por Pablo | con 3 comment(s)
Archivado en:
[Screencast] Virtualizando Linux en Hyper-V R2

Una manera sencilla y práctica de mostrar “¿Cómo se hace?”.
En este video veremos cómo instalar y configurar de manera completa los Componentes de Integración de servicios sobre Suse Linux. Además mostraremos la configuración de la tarjeta de red sisntética seth0. Se instalará además el componente Satori para mejorar la integración del mouse por Escritorio Remoto.


Get Microsoft Silverlight
Posted: 10/11/2009 7:48 por Pablo | con 11 comment(s)
[Charla] Chile - Cells on Camp + Interoperabilidad en ambientes virtualizados

Hola a todos. El MIERCOLES 4 a las 9:45 a 10:45 estaré mostrando como configurar Linux sobre Hyper-v

EDITADO.... Es el MIERCOLES 4 no es Jueves

El objetivo de esta sesión es mostrar cómo Hyper-V tiene capacidades para extender la virtualización más allá de virtualizar solo Windows, es decir, virtualizar sistemas operativos basados en Linux y demostrar los componentes de integración que están en desarrollo para mejorar la experiencia en Linux virtualizado con Hyper-V así como el impacto de las 22.000 líneas de código donadas por Microsoft al kernel de Linux que van orientadas a mejorar Linux de cara a la virtualización con Hyper-V

Les comparto toda la agendahypervdrink1_5F00_1145D696[1]

9:45 - 10:45: Pablo Campos -
Interoperabilidad en ambientes virtualizados 
11:00 - 12:00: Max Marín -
Introducción a Windows 7
12:15 - 13:15: Francisco Agurto -
Silverlight 3 new features!
13:15 - 14:15: Almuerzo
14:30 - 15:30: Brede Basualdo -
Programación para Windows Mobile
15:45 - 16:45: Leo Muñoz -
Desarrollo de cliente escritorio para Facebook
17:00 - 18:00: Gonzalo Pérez -
Lo nuevo de ASP.net

Donde: DuocUC- Sede San Andrés Concepción

Posted: 2/11/2009 20:15 por Pablo | con no comments
Importando Máquina Virtual con PowerShell Hyper-v
#Nombre del Servidor hyper-v
$HyperVHostOrigen="hyperv-01"
#Carpeta donde reside el Export Anterior
$dirMaquina = "D:\Backup\Backup_2009_7_6\2008"
#Instanciamos el Servicio de VMM
$VM_Service = get-wmiobject -computer $HyperVHostOrigen -namespace root\virtualization -class Msvm_VirtualSystemManagementService
#Importamos la maquina
$Status = $VM_Service.ImportVirtualSystem("$dirmaquina", $True) 
If ($status.ReturnValue -eq 4096)
{
   
$Job = [WMI]$Status.Job
   
$JobStatus = $Job.JobState
   
while ($JobStatus -ne 7)
   
{
       
sleep(1)
       
$Job = [WMI]$Status.Job
       
$JobStatus = $Job.JobState
       
echo $job.PercentComplete
   
}
}
 
Posted: 31/10/2009 11:48 por Pablo | con no comments
Archivado en: ,,
Exportar Maquinas Virtuales con PowerShell +WMI
Hola a todos, les dejo este scripts que les puede servir para automatizar el respaldo de sus maquinas virtuales con hyper-v, solamente queda meterlo en el programador de tareas y lanzarlo las veces que quieran.
Recuerden que para exportar una maquina esta debe estar apagada o en estado guardado, asiq mientras se realiza la exportación la maquina queda sin conectividad
#Selecciono el hyper-v de Origen puede ser hyper-v en modo core o GUI
$HyperVHostOrigen="hyperv-01"
#Nombre de la maquina virtual a respaldar
$MasterVM="2008"
#Carpeta de destino del respaldo
$fecha = get-date
$dirMaquina = "D:\Backup\" + "Backup_" + $fecha.year + "_" + $fecha.month + "_" + $fecha.day 

$VM_Service = get-wmiobject -computer $HyperVHostOrigen -namespace root\virtualization -class Msvm_VirtualSystemManagementService
$SourceVm = Get-WmiObject -Namespace root\virtualization -Query "Select * From Msvm_ComputerSystem Where ElementName='$MasterVM'" -ComputerName $HyperVHostOrigen
#Nos aseguramos que la maquina quede en estado Guardado
$SourceVm.RequestStateChange(32769)
#Le damos unos 15 segundos para que se pueda gurdar la maquina 
sleep(15)
#Exportamos la maquina virtual
$Status = $VM_Service.ExportVirtualSystem($SourceVm.__PATH, $True, $dirMaquina) 

#Generamos un par de validaciones para ver cuando se termine el trabajo
If ($status.ReturnValue -eq 4096)
{
   
$Job = [WMI]$Status.Job
   
$JobStatus = $Job.JobState
   
while ($JobStatus -ne 7)
   
{
       
sleep(1)
       
$Job = [WMI]$Status.Job
       
$JobStatus = $Job.JobState
       
echo $job.PercentComplete
   
}
}
#Iniciamos la amquina virtual
$MaquinaFuente.RequestStateChange(2)

 

image


PD: Los valores de los RequestStateChange los saque del sitio de MSDN http://msdn.microsoft.com/en-us/library/cc723874%28VS.85%29.aspx

Posted: 29/10/2009 8:23 por Pablo | con no comments
Archivado en: ,,
Más artículos Página siguiente >