Mostrando entradas con la etiqueta PowerShell. Mostrar todas las entradas
Mostrando entradas con la etiqueta PowerShell. Mostrar todas las entradas

lunes, 19 de junio de 2017

Powershell Desired State Configuration

Powershell Desired State Configuration (DSC)

DSC es la tecnología de Powershell que nos permite, a través de scripts, mantener un estado deseado de configuración en los equipos.

De este modo podemos lograr un estado de cumplimiento que puede automatizarse para que se ejecute regularmente, permitiendo que nuestros equipos tengan siempre el estado de configuración deseada.

En esta nota mostramos un ejemplo básico de Powershell DSC que define como estado deseado la presencia de un rol determinado en un servidor.


Modos de configuración de DSC

Modo Push: un administrador envía manualmente las configuraciones a los nodos. Este método es manual y no garantiza que los equipos que estén apagados o desconectados en ese momento reciban la configuración.

Modo Pull: se crea un servidor (pull server) y los nodos lo contactan regularmente para obtener su configuración.

Su principal ventaja es que cuando los equipos se conectan a la red reciben la configuración deseada. Como desventaja requiere un equipo configurado como Pull server.

DSC Resources

Los recursos de DSC representan lo que queremos configurar en cada nodo en forma forzada, por ejemplo servicios, roles, archivos, etc.

Ejecutando Get-DSCResource podemos obtener una lista de recursos (entre los que vemos Windows Feature, Service, File, WindowsProcess, etc).

Ejemplo: lista de recursos obtenida al ejecutar Get-DSCResource
  • File
  • SignatureValidation
  • Archive
  • Environment
  • Group
  • GroupSet
  • Log
  • Package
  • ProcessSet
  • Registry
  • Script
  • Service
  • ServiceSet
  • User
  • WaitForAll
  • WaitForAny
  • WaitForSome
  • WindowsFeature
  • WindowsFeatureSet
  • WindowsOptionalFeature
  • WindowsOptionalFeatureSet
  • WindowsPackageCab
  • WindowsProcess

Sintaxis del script


En la configuración siguiente, que llamamos TestConfig se trata de forzar que en el nodo LON-SVR1 esté instalado el rol de DNS Server (DNS)

Configuration TestConfig
{
                Node “LON-SVR1”
                                {
                                WindowsFeature DNSExample
                                                {
                                                Ensure = “Present”
                                                Name = “DNS”                                                }
                                }
}

NOTA: en Node podría usarse una variable previamente definida, por ejemplo $Servers o eventualmente Localhost para que sirva en varios equipos.


Antes de comenzar con la configuración verificamos que el rol DNS no está instalado en el servidor LON-SVR1












Consulta de Sintaxis para el Resource "WindowsFeature"

Mediante Get-DscResource windowsfeature -Syntax averiguamos la sintaxis para el recurso Feature. El resultado nos muestra las opciones "Name" y "Ensure" utilizadas en el script del ejemplo.


WindowsFeature [String] #ResourceName
{
    Name = [string]
    [Credential = [PSCredential]]
    [DependsOn = [string[]]]
    [Ensure = [string]{ Absent | Present }]
    [IncludeAllSubFeature = [bool]]
    [LogPath = [string]]
    [PsDscRunAsCredential = [PSCredential]]
    [Source = [string]]
}


Preparación del Script:

El script se debe ejecutar como función. Una forma sencilla de lograrlo es agregar el nombre de la función en la última línea del script (TestConfig en el ejemplo)

En la figura siguiente vemos el script editado en Powershell ISE



Guardamos el script con  en la carpeta C:\DSC con el nombre TestConfig.ps1


Ejecución del script:

Lo ejecutamos mediante la sentencia C:\DSC\> .\TestConfig.ps1




El script en sí no aplica la configuración, sino que crea un archivo MOF que es un archivo de texto con la configuración que se va a aplicar.

El archivo MOF podría crearse manualmente, aunque es más sencillo seguir los pasos previos.

Puede verse el archivo MOF editado con Notepad.




















A continuación se invoca el MOF usando el CMDLET Start-DscConfiguration

Start-DscConfiguration –Wait –Verbose –Path .\TestConfig

La opción Verbose permite que se vea el progreso de la configuración.



























Al terminar se volvió a ejecutar Get-WindowsFeature para ver el estado del rol DNS.
Puede verse en la pantalla siguiente que DNS Server está instalado. 



lunes, 8 de febrero de 2016

Cómo conectarse a Office365 mediante Powershell ?

Escenario

A menudo el administrador de Office365 necesitar automatizar sus tareas diarias, y no hay nada mejor que hacerlo mediate Microsoft PowerShell.
Para poder conectarse y administrar Office365 se deberá primero importar los módulos necesarios y crear las respectivas sesiones remotas a los servicios. En las siguientes líneas te mostraré como importar los siguientes módulos:
  • Azure Active Directory
  • Sharepoint Online
  • Skype for Business
Exchange Online no requiere de la importación de un módulo, solamente se deberá establecer la sesión remota.
El motivador por el cual escribo esta entrada en mi blog, es la falta de documentación de un proceso paso a paso mediante PowerShell.

Paso a Paso

Capturar las credenciales
$credential = get-credential

Importar el módulo de "Azure Active Directory"
Import-Module MSOnline

Establecer una conección con "Azure Active Directory"
Connect-MsolService -Credential $credential

Importar el módulo de "Skype for Business Online"
Import-Module LyncOnlineConnector

Crear una sesión remota para "Skype for Business Online"
$lyncSession = New-CsOnlineSession -Credential $credential

Importar los cmd lets de "Skype for Business Online"
Import-PSSession $lyncSession

Importar los cmd lets de "Sharepoint Online"
Import-Module Microsoft.Online.Sharepoint.PowerShell

Crear una sesión remota para "Exchange Online"
$ExchangeSession = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri "https://outlook.office365.com/powershell-liveid/" -Credential $credential -Authentication "Basic" -AllowRedirection

Importar los datos de la sesión remota en PowerShell
Import-PSSession $ExchangeSession

Aclaraciones

Es muy común encontrar publicaciones que nos invitan a correr tal o cual comando, pero que al tratar de hacerlo el interprete de PowerShell no lo encuentra.
PowerShell podrá interpretar aquellos comandos cuyos módulos hayan sido instalados e importados de antemano. En otra entrada de mi Blog dedicaré algunas líneas a este tópico, mientras tanto recomiendo que echen un vistazo a la siguiente públicación de Joe Davies.

Link a la publicación en Inglés

http://blogs.technet.com/b/solutions_advisory_board/archive/2015/12/21/closing-the-loop-improving-office-365-powershell-content-for-administrators.aspx 

Script de Ejemplo (Link a OneDrive)

Mi Blog Personal -> http://marioganem.wordpress.com/

miércoles, 14 de enero de 2015

Administrar Servidores Windows 2012 no unidos al dominio mediante Server Manager



Puede que nuestra organización incluya algún servidor no unido a dominio que nos interese administrar remotamente de la misma manera que hacemos con los servidores de dominio.
Utilizando PowerShell podemos configurar la administración remota mediante Server Manager de los servidores que no sean miembros del dominio.
Antes de mostrar los pasos necesarios, damos una breve introducción sobre WinRM y WS-Management
 
WinRM y WS-Man:
El protocolo WS-Management (Web Services for Management)  es un protocolo web creado para operaciones de administración a través de sistemas heterogéneos, es decir entre diversos tipos de dispositivos y de sistemas operativos.
Power Shell Remoto (PS-Remoting) está construido sobre Windows Remote Management (WinRM) que es la implementación Microsoft de WS-Management.
 
Aunque habitualmente usamos la herramienta WinRM, PowerShell contiene un proveedor WSMan para poder administrar configuraciones WinRM mediante los cmdlet básicos como por ejemplo Set-Item

Escenario:
Equipo DC01, Controlador de Dominio de Windowsmct.com, IP: 172.16.0.10
Equipo TESTNAT, Servidor Windows 2012 R2 no unido a dominio, IP: 172.16.0.1

Objetivo:
Desde DC01 administrar el servidor TESTNAT usando Server Manager

1- Resolución de Nombres: es importante resolver el nombre del equipo a administrar, ya que no podemos utilizar la dirección IP. En el ejemplo editamos el archivo Hosts en DC01 y agregamos la entrada Testnat con su IP correspondiente
 
 
A continuación probamos que la resolución de nombres sea correcta
 
 





 
 2- Ejecución de comandos de PowerShell en DC01 para configurar la administración remota del equipo Testnat
 

 
A continuación se muestra el valor configurado en TrustedHost (Testnat) para el provider WSMan
 

3- Agregar el Servidor Testnat al Server Manager de DC01: Lo hacemos del mismo modo que haríamos para un equipo miembro, aunque en lugar de usar la pestaña Active Directory, utilizamos la sección DNS. Escribimos el nombre del servidor (resolverá la IP) y luego lo agregamos a la lista de equipos seleccionados
 
 
El equipo Testnat aparece en Server Manager con un error de Kerberos
 
 
4- Administrar el Servidor: Sobre el servidor Testnat, en el menú contextual seleccionamos la opción "Manage As..."
 
 Debemos ingresar las credenciales del administrador local del equipo Testnat
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Podemos ver el servidor Testnat con estado de administración Online
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  
 
 
De aquí en más el servidor puede administrarse normalmente. En el ejemplo se muestra la consola de Computer Management.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
NOTA: el firewall del servidor Testnat debe tener habilitadas las reglas correspondientes para admitir la administración remota.

martes, 13 de enero de 2015

Configuración Básica y Administración Remota de un Server Core - Parte 2

Administración Remota del Server Core usando Server Manager




vimos como establecer las configuraciones básicas del servidor mediante PowerShell.

En esta segunda parte mostraremos cómo administrar remotamente el Servidor Core utilizando Server Manager.

1- Configuración del Firewall: El principal escollo que encontraremos para administrar remotamente el servidor Core será la configuración del Firewall. Deberemos habilitar reglas de acuerdo a las acciones que necesitemos hacer.
Aunque las reglas pueden habilitarse individualmente, conviene siempre habilitar el grupo de reglas correspondientes a una acción.
Para ver los nombres de esos grupos, ejecutamos el cmdlet Get-NetFirewallRule
 



 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

2- Habilitar los grupos de reglas: Primero se habilitarán las reglas de Windows Remote Management (fundamentales para poder conectarse mediante Server Manager), luego las de Remote Service Management (para administrar servicios) y finalmente las de Remote Event Log Management (para abrir Event Viewer). Para ello usamos el cmdlet Enable-NetFirewallRule

 
 
 3- Conectarse desde Server Manager: En la consola de Server Manager del servidor DC01 agregamos el equipo CORE01


 4- Verificamos que el servidor CORE01 está Online
 
 
5- Verificamos que puede abrirse Event Viewer de CORE01
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

6- Verificamos que se abre la consola de Servicios de CORE01
 
 
 
 


 



Configuración Básica y Administración Remota de un Server Core - Parte 1

Configuración de un Servidor Core

Descripción del Escenario

NOTA: El siguiente tema corresponde al curso 20410

En el laboratorio del Módulo 1 del 20410 se configura un servidor CORE mediante el menú Sconfig. A continuación lo haremos utilizando PowerShell, ya que en el examen de certificación incluyen varias preguntas al respecto.

En este escenario, el equipo DC01 es el controlador de dominio para el dominio windowsmct.com, este equipo ejecuta Windows Server 2012 R2 Standard Edition
 
Se instaló otro servidor sin GUI (CORE) en el que se mostrarán las tareas de configuración inicial
 
1 - Configuración IP: el Interface Index de la conexión Ethernet es 12 (puede averiguarse usando el cmdlet Get-NetIPAddress)

Mediante New-NetIPAddress se configura IP, SM y DG




2 - Configuración DNS: Se configura el servidor DNS mediante el cmdlet Set-DnsClientServerAddress
 
 
3 - Renombrar el equipo: Mediante el cmdlet Rename-Computer
 
 
 
 

 
 
4 - Unir el equipo al dominio: Mediante el cmdlet Add-Computer
 
 
 
 
5 - Puede verificarse que el equipo CORE01 es miembro del dominio Windowsmct.com