Nueva ruta de certificaciones Microsoft

Empecé el día con mi café, e investigando nuevos contenidos y referencias sobre las certificaciones de azure, quería saber que nuevos materiales encontraba para el AZ-103, pues en infraestructura IAAS es el nuevo examen de Microsoft que reemplazaría el AZ-102, el cual a su vez reemplazo el 70-533, y me encontré con la ruta completa de certificaciones de Microsoft , empezando con un nivel introductorio en Azure, el AZ-900 es el nivel para todos los que quieren comenzar a estudiar este producto, siguiendo con las certificaciones para Infraestructura (Az-103), desarrollo de aplicaciones (Az-203) y arquitectura (Az-300), para luego encontrarnos con DevOps (Az-400) y seguridad en Azure (Az-500), pero en mi opinion (la cual no han pedido) las líneas punteadas, y la continuidad académica deberían ser como una cadena, siguiendo la misma traza que mis líneas acaban de relatar. Porque no puedes llegar a Arquitecto sin conocer de antemano todas las aristas, que ofrece este poliedro.

Encontre que también hay una ruta de certificacion para cientificos de datos (la cual proviene de las certificaciones de SQL)

y otra linea se denomina Modern Workplace donde vemos que se encuentran las soluciones de Office 365, Exchange y Sharepoint, asi como Windows 10. Pero aqui analizo otra particularidad, Microsoft en los inicios de Office365 tenia un plan de formación donde aprendías primero de Exchange, SharePoint y Lync (en sus versiones 2010) y luego hacías el examen 70-321 de Office 365, luego en tiempos de Exchange 2013 y SharePoint 2013, surgió Skype for Business, y en esa entonces nos invirtieron la secuencia, aprendiendo primero de Office 365 que de servidores Exchange, Skype o SharePoint. ahora en este plan de carrera, veo que lo vuelven a definir despues.

hay una rama adicional sobre los servicios de dynamics, pero esa si ni la quise mirar porque es super extensa… y creo que mi estimada amiga y colega MCT Blanca Baute, a quien le envio un saludo.

información tomada de http://aka.ms/TrainCertPoster

20 de julio

Regularmente este blog no comparte opiniones políticas, religiosas o de futbol, pues es lo que nos mantiene en la imparcialidad que nos permite enfocarnos en los temas técnicos que desarrollamos, es un espacio donde he compartido mis experiencias técnicas, mis expectativas y ha aportado un poco a la vida de quienes leen estas líneas, para algunos es un referente donde a partir de guías y explicaciones he hecho la presentación de herramientas y scripts que están disponibles para PowerShell, Windows Server, Exchange, Azure, SharePoint, o incluso Linux. Sin expresar mis creencias católicas, apostólicas y romanas, o mi gusto por el Junior de Barranquilla pero hoy quiero darle un toque mas humanístico y entintar este post con mi pensamiento y gustos.

Tras casi 25 años de experiencia laboral, y de haber pasado por grandes empresas como Unisys, HP, IBM, Comware, VisionSoftware, ControlesEmpresariales, Glup, Compuredes, Softtek, Manpower, Synapsis, AlfaIngenieros, Rentabyte o IXO, y luego de haber hecho parte de grandes equipos, y de ayudar a salir adelante proyectos como ATH, Colpensiones, Aeronáutica Civil, Agencia Nacional de Hidrocarburos, Agencia Nacional para Reinserción de desmovilizados, Superfinanciera, Supersubsidio, Invias, Nueva EPS, Helm bank, Banco Santander, Bolsa Mercantil de Colombia, Colombia Movil – Tigo, Comcel – Claro, Movistar – Telefónica, Belcorp, Grupo Nutresa, o el soporte premier para Microsoft donde atendí muchos otros clientes. He mantenido una voz firme en temas técnicos, y he enseñado como entrenador certificado por Microsoft por mas de una década, conociendo grandes e importantes personas, muchas de ellas incluso fueron y son alumnos y amigos.

Hoy que es día de la independencia colombiana, 20 de julio de 2019, empecé el día con un café, seis de la mañana, me sente en el sofá, y empecé a pensar mientras lo saboreaba a sorbos, en todos los españoles y criollos que tuvieron que haber peleado, y finalmente fallecido en esas refriegas que llevaron al grito de independencia, y me imaginé toda la devastación que estas tierras tropicales y cálidas han soportado, la cantidad de sangre que se tuvo que haber derramado, no importaba la experiencia técnica, los años de arduo trabajo campesino, o militar, todos se median en medio del campo de batalla y defendían sus ideas, su honor, su familia y su patria. Hay que ser medio pendejo para irse al monte a matarse a puñetazos, con lanzas, bayonetas, o fusiles, pero ordenes son órdenes. y militares españoles o criollos igual tenían que hacer caso, o los fusilaban seguramente por traición.

Nos maravillamos con los avances tecnológicos que permiten gestionar remotamente a los drones Reaper (aviones no tripulados) acabar con metralletas o misiles un pueblo donde hay personas que son amenazas para la sociedad, (los americanos y sus juguetes), el poder destructivo de un solo avión de combate Raptor, la capacidad de carga de un solo helicóptero militar Black Hawk, y los avances en cuanto a balística y armas de fuego (creo que estoy viendo mucha televisión criminalística), pero estos próceres creían firmemente en sus ideas, y eran duramente enjuiciados, o castigados, Camilo Torres, Antonio Nariño, y la Pola creían firmemente en sus ideas, hay que ver darse el recorrido desde Santa Marta a Bogota en caballos, eso es tener firmeza en una causa. Esas clases de historia del colegio solamente nos enseñaron las fechas de los eventos, de las batallas, de cuando llegaron los españoles y se aprovecharon de estas tierras hace más de 500 años, pero lo que no nos cuentan es el trasfondo, y después de haber visto Game of Thrones, los excesos que seguramente hace 500 años venia teniendo Europa, las guerras que internamente ellos tuvieron allí, por poder, sexo o riquezas, las guerras entre tribus y clanes, las enemistades y alianzas, que llevaron a que empezaran esa competencia contra los británicos, por lograr una expansiva y de hallar nuevos territorios y riquezas, lo cual los resulto trayendo al otro lado del atlántico. Ese cuentico de que el italiano Cristobal Colon le pidió un préstamo a la reina, solo me suena a un episodio de Californication, donde llega el tipo con acento italiano, y en medio de tragos y una fiesta tremenda, la reina insatisfecha le pone los cuernos a su rey, quien le es infiel todas las noches con diferentes mujeres, y esta le da sus joyas de la corona al buen Colon, por ese buen tiempo que compartieron juntos, con la promesa de que vuelva pronto.

Luego me puse a pensar en que aquí también ha de haber habido guerras de tribus y clanes, territorios defendidos con honor entre guerreros Panches y Muiscas, épicas batallas que seguramente los ancestros mas veteranos les contaban a sus queridos nietos, mirando a las estrellas, y bajo la tenue luz de una fogata, pero muchas de esas memorias simplemente se perdieron entre el holocausto que tuvo que haber representado la invasión con armas de fuego por parte de los acorazados y no muy buenos hombres de Colon. Para que hoy en día, sin importar banderas ni partidos políticos, todos los gobernantes y dirigentes del país se hubiesen vendido a una misma idea, su bienestar económico particular. Los lideres no pueden tener solución para todo, pero si pueden escuchar, orientar y hacer que los esfuerzos de la ciudadanía vayan hacia un frente común, es bonito pensar que este platanal puede tener esperanzas, que hay alguna oportunidad, delegando planes de trabajo a unidades mas pequeñas, un Alcalde haría mucho mas, si los alcaldes de localidades, tuvieran presupuesto, e independencia, si estos a su vez contaran con lideres comunitarios por cada barrio, por cada cuadra, pero a veces no nos ponemos de acuerdo ni entre la misma familia.

Pero acudiendo a el análisis social del pensador y comediante Andrés López, desde la generación de hijos del 79’ (generación de la guayaba) en adelante no queremos tomar un bando, somos los hijos de esos hogares de padres separados, no queremos defender una idea, ni inclinar la balanza hacia papá o mamá, mucho menos defender una bandera, ni una tendencia política, no somos Azules o Rojos, por eso aparecieron todos los otros colores, amarillo, verde, terracota y salmón, estamos tan agobiados queriendo ser cool, vernos diferentes con piercings y tatuajes que nos hagan únicos, que nuestras ideas, y el amor al prójimo no son la prioridad, «a quien le importa lo que yo piense, y de todas maneras eso no va a cambiar nada». Pues la verdad no es un problema de ideología política, o de planes de gobierno, donde se acomodan y se adaptan las condiciones (y el presupuesto), simplemente reduzcamos el problema a que no conocemos a nuestros vecinos, no nos duele nuestro barrio, no hay sentimiento de propiedad, de querer hacer algo por mi familia, por mi barrio, por mi país, porque simplemente podemos pasar sin tropezar a nadie mientras no hagamos mucho ruido, podemos pasar el día con un café con leche y un pan, simplemente para no tener que molestarnos en hacer un desayuno de carne en bistec con bollo limpio. Por eso quise levantar mi opinión hoy día de la independencia, quiero invitarlos a reflexionar sobre esto, a que hagan el desayuno de su casa, amen a su núcleo familiar, sus hijos, su pareja. Timbren en la casa de al lado, conozcan a sus vecinos, tómenle sus teléfonos, háganse amigos, compartan con ellos, la familia se extiende cuando conoces a tus vecinos, y en conjunto se puede lograr que tengamos conciencia de comunidad, empecemos con ese pequeño acto, de que nos duela lo que le pasa al de al lado porque lo conocemos, porque podemos ayudar y de alguna manera todos somos Colombia.

Seguramente hay algo que podamos hacer, por nuestra familia, por nuestros vecinos, por nuestros amigos, este 20 de Julio es una fiesta nacional, para compartir con amor, para recordar a los que dieron sus vidas por nuestra libertad, celebremos por esa idea de que seamos una nación, que lucha unida, que tenga empuje en una misma dirección. Dejemos de echar la culpa a los gobernantes y los malos dirigentes, porque cada uno de nosotros puede aportar, tal vez no tengamos el poder de decisión, pero si tenemos como actuar, y como hacer el trabajo bien hecho, para nuestra satisfacción personal, para el beneficio de la comunidad, para hacer historia.

Exchange 2019 Lab

Estuve realizando la investigación de los requerimientos para poder implementar Exchange server 2019, los requisitos de software no son gran cosa, windows Server 2019 con o sin interfaz gráfica, .Net 4.7.2, el componente redistribuible de Visual C++, y el complemento de Unified Comunications (que esta dentro del ISO del instalador de exchange). sin embargo los requerimientos de Hardware si son mas exclusivos, pues pide 2 procesadores x64 *intel o AMD, y 128 GB de memoria RAM, mas un espacio en disco de 30GB para los binarios, mas el espacio que dediques para la base de datos, idealmente en un disco aparte. así que esto me llevo a utilizar mi ya quemada suscripción de Azure, para probar este escenario, y resulte encontrando esta joya de hipervinculo https://docs.microsoft.com/en-us/Exchange/plan-and-deploy/deploy-new-installations/create-azure-test-environments?view=exchserver-2019 donde paso a paso hay un script de Powershell que crea un escenario de laboratorio, desplegando un controlador de dominio y un servidor Exchange 2019. Es necesario que instales el modulo AZ para Powershell, y que tengas una suscripción gratuita de Azure para replicar estos pasos

Connect-AzAccount

Get-AZSubscription | Sort SubscriptionName | Select SubscriptionName

$subscrName=»Plataformas de MSDN«
Select-AzSubscription -SubscriptionName $subscrName

Get-AZResourceGroup | Sort ResourceGroupName | Select ResourceGroupName

$rgName=»LabExch19«
$locName=»EastUS«
New-AZResourceGroup -Name $rgName -Location $locName

Get-AZStorageAccount | Sort StorageAccountName | Select StorageAccountName

Get-AZStorageAccountNameAvailability «»

$rgName=»LabExch19«
$locName=»EastUS»
$locName=(Get-AZResourceGroup -Name $rgName).Location
New-AZStorageAccount -Name $saName -ResourceGroupName $rgName -Type Standard_LRS -Location $locName

$rgName=»LabExch19»
$locName=(Get-AZResourceGroup -Name $rgName).Location
$Subnet=New-AZVirtualNetworkSubnetConfig -Name Subnet01 -AddressPrefix 10.0.0.0/27
New-AZVirtualNetwork -Name Vnet01 -ResourceGroupName $rgName -Location $locName -AddressPrefix 10.0.0.0/24 -Subnet $Subnet -DNSServer 10.0.0.4
$rule1 = New-AZNetworkSecurityRuleConfig -Name «RDPTraffic» -Description «Allow RDP to all VMs on the subnet» -Access Allow -Protocol Tcp -Direction Inbound -Priority 100 -SourceAddressPrefix Internet -SourcePortRange * -DestinationAddressPrefix * -DestinationPortRange 3389
$rule2 = New-AZNetworkSecurityRuleConfig -Name «ExchangeSecureWebTraffic» -Description «Allow HTTPS to the Exchange server» -Access Allow -Protocol Tcp -Direction Inbound -Priority 101 -SourceAddressPrefix Internet -SourcePortRange * -DestinationAddressPrefix «10.0.0.5/32» -DestinationPortRange 443
New-AZNetworkSecurityGroup -Name Subnet01 -ResourceGroupName $rgName -Location $locName -SecurityRules $rule1, $rule2
$vnet=Get-AZVirtualNetwork -ResourceGroupName $rgName -Name Vnet01
$nsg=Get-AZNetworkSecurityGroup -Name Subnet01 -ResourceGroupName $rgName
Set-AZVirtualNetworkSubnetConfig -VirtualNetwork $vnet -Name Subnet01 -AddressPrefix «10.0.0.0/27» -NetworkSecurityGroup $nsg
$vnet | Set-AzVirtualNetwork

$rgName=»LabExch19»

Create an availability set for domain controller virtual machines

New-AZAvailabilitySet -ResourceGroupName $rgName -Name dcAvailabilitySet -Location $locName -Sku Aligned -PlatformUpdateDomainCount 5 -PlatformFaultDomainCount 2

Create the domain controller virtual machine

$vnet=Get-AZVirtualNetwork -Name Vnet01 -ResourceGroupName $rgName
$pip = New-AZPublicIpAddress -Name adVM-NIC -ResourceGroupName $rgName -Location $locName -AllocationMethod Dynamic
$nic = New-AZNetworkInterface -Name adVM-NIC -ResourceGroupName $rgName -Location $locName -SubnetId $vnet.Subnets[0].Id -PublicIpAddressId $pip.Id -PrivateIpAddress 10.0.0.4
$avSet=Get-AZAvailabilitySet -Name dcAvailabilitySet -ResourceGroupName $rgName
$vm=New-AZVMConfig -VMName adVM -VMSize Standard_D1_v2 -AvailabilitySetId $avSet.Id
$vm=Set-AZVMOSDisk -VM $vm -Name adVM-OS -DiskSizeInGB 128 -CreateOption FromImage -StorageAccountType «Standard_LRS»
$diskConfig=New-AZDiskConfig -AccountType «Standard_LRS» -Location $locName -CreateOption Empty -DiskSizeGB 20
$dataDisk1=New-AZDisk -DiskName adVM-DataDisk1 -Disk $diskConfig -ResourceGroupName $rgName
$vm=Add-AZVMDataDisk -VM $vm -Name adVM-DataDisk1 -CreateOption Attach -ManagedDiskId $dataDisk1.Id -Lun 1
$cred=Get-Credential -Message «Type the name and password of the local administrator account for adVM.»
$vm=Set-AZVMOperatingSystem -VM $vm -Windows -ComputerName adVM -Credential $cred -ProvisionVMAgent -EnableAutoUpdate
$vm=Set-AZVMSourceImage -VM $vm -PublisherName MicrosoftWindowsServer -Offer WindowsServer -Skus 2019-Datacenter -Version «latest»
$vm=Add-AZVMNetworkInterface -VM $vm -Id $nic.Id
New-AZVM -ResourceGroupName $rgName -Location $locName -VM $vm

conecte al adVM y ejecute

$disk=Get-Disk | where {$_.PartitionStyle -eq «RAW»}
$diskNumber=$disk.Number
Initialize-Disk -Number $diskNumber
New-Partition -DiskNumber $diskNumber -UseMaximumSize -AssignDriveLetter
Format-Volume -DriveLetter F

Install-WindowsFeature AD-Domain-Services -IncludeManagementTools
Install-ADDSForest -DomainName CampoHenriquez.com -DatabasePath «F:\NTDS» -SysvolPath «F:\SYSVOL» -LogPath «F:\Logs»

Add-WindowsFeature RSAT-ADDS-Tools

Creamos ahora la maquina de Exchange

$vmDNSName=»Mail01Exch19«
$rgName=»LabExch19»
$locName=(Get-AZResourceGroup -Name $rgName).Location
Test-AZDnsAvailability -DomainQualifiedName $vmDNSName -Location $locName

Set up key variables

$subscrName=»Plataformas de MSDN«
$rgName=»LabExch19»
$vmDNSName= «Mail01Exch19»

Set the Azure subscription

Select-AzSubscription -SubscriptionName $subscrName

Get the Azure location and storage account names

$locName=(Get-AZResourceGroup -Name $rgName).Location
$saName=(Get-AZStorageaccount | Where {$_.ResourceGroupName -eq $rgName}).StorageAccountName

Create an availability set for Exchange virtual machines

New-AZAvailabilitySet -ResourceGroupName $rgName -Name exAvailabilitySet -Location $locName -Sku Aligned -PlatformUpdateDomainCount 5 -PlatformFaultDomainCount 2

Specify the virtual machine name and size

$vmName=»Mail01Exch19»
$vmSize=»Standard_D3_v2″
$vnet=Get-AZVirtualNetwork -Name Vnet01 -ResourceGroupName $rgName
$avSet=Get-AZAvailabilitySet -Name exAvailabilitySet -ResourceGroupName $rgName
$vm=New-AZVMConfig -VMName $vmName -VMSize $vmSize -AvailabilitySetId $avSet.Id

Create the NIC for the virtual machine

$nicName=$vmName + «-NIC»
$pipName=$vmName + «-PublicIP»
$pip=New-AZPublicIpAddress -Name $pipName -ResourceGroupName $rgName -DomainNameLabel $vmDNSName -Location $locName -AllocationMethod Dynamic
$nic=New-AZNetworkInterface -Name $nicName -ResourceGroupName $rgName -Location $locName -SubnetId $vnet.Subnets[0].Id -PublicIpAddressId $pip.Id -PrivateIpAddress «10.0.0.5»

Create and configure the virtual machine

$cred=Get-Credential -Message «Type the name and password of the local administrator account for exVM.»
$vm=Set-AZVMOSDisk -VM $vm -Name ($vmName +»-OS») -DiskSizeInGB 128 -CreateOption FromImage -StorageAccountType «Standard_LRS»
$vm=Set-AZVMOperatingSystem -VM $vm -Windows -ComputerName $vmName -Credential $cred -ProvisionVMAgent -EnableAutoUpdate
$vm=Set-AZVMSourceImage -VM $vm -PublisherName MicrosoftWindowsServer -Offer WindowsServer -Skus 2019-Datacenter -Version «latest»
$vm=Add-AZVMNetworkInterface -VM $vm -Id $nic.Id
New-AZVM -ResourceGroupName $rgName -Location $locName -VM $vm

Conectese a exVM y ejecute

Add-Computer -DomainName «Campohenriquez.com»
Install-WindowsFeature NET-Framework-45-Features, RPC-over-HTTP-proxy, RSAT-Clustering, RSAT-Clustering-CmdInterface, RSAT-Clustering-Mgmt, RSAT-Clustering-PowerShell, Web-Mgmt-Console, WAS-Process-Model, Web-Asp-Net45, Web-Basic-Auth, Web-Client-Auth, Web-Digest-Auth, Web-Dir-Browsing, Web-Dyn-Compression, Web-Http-Errors, Web-Http-Logging, Web-Http-Redirect, Web-Http-Tracing, Web-ISAPI-Ext, Web-ISAPI-Filter, Web-Lgcy-Mgmt-Console, Web-Metabase, Web-Mgmt-Console, Web-Mgmt-Service, Web-Net-Ext45, Web-Request-Monitor, Web-Server, Web-Stat-Compression, Web-Static-Content, Web-Windows-Auth, Web-WMI, Windows-Identity-Foundation, RSAT-ADDS-Tools
Restart-Computer

Fase 3> Configurar el Exchange

Write-Host (Get-AZPublicIpaddress -Name «exVM-PublicIP» -ResourceGroup $rgName).DnsSettings.Fqdn

Desde exVM

descarga los pre-requisitos, Visual C++ redis, UC Managed API https://www.microsoft.com/download/details.aspx?id=34992 y el .Net 4.7.2

descarga el ISO de Exchange con el ultimo CU

e:
.\setup.exe /mode:Install /role:Mailbox /OrganizationName:CampoHenriquez /IacceptExchangeServerLicenseTerms
Restart-Computer

$dnsName=»»
$user1Name=»chris@» + $dnsName
$user2Name=»janet@» + $dnsName
$db=Get-MailboxDatabase
$dbName=$db.Name
$password = Read-Host «Enter password» -AsSecureString

New-Mailbox -UserPrincipalName $user1Name -Alias chris -Database $dbName -Name ChrisAshton -OrganizationalUnit Users -Password $password -FirstName Chris -LastName Ashton -DisplayName «Chris Ashton»
New-Mailbox -UserPrincipalName $user2Name -Alias janet -Database $dbName -Name JanetSchorr -OrganizationalUnit Users -Password $password -FirstName Janet -LastName Schorr -DisplayName «Janet Schorr»

Detener / Iniciar las maquinas virtuales

$rgName=»»
Stop-AZVM -Name exVM -ResourceGroupName $rgName -Force
Stop-AZVM -Name adVM -ResourceGroupName $rgName -Force

$rgName=»»
Start-AZVM -Name adVM -ResourceGroupName $rgName
Start-AZVM -Name exVM -ResourceGroupName $rgName

Probando el Windows Terminal

Como lo habia anunciado días atrás, Microsoft consiguió liberar una Terminal que unifica bajo el mismo entorno, PowerShell Core, Windows Linux Subsystem (wsl) y la linea de comandos D.O.S.

Encuentro atractivas sus transparencias, la posibilidad de tener varias tabs o pestañas y poder de cierta forma hacer mas amable el uso de la linea de comandos. Para instalarlo simplemente ingrese en el Windows Store, y busque Windows Terminal (Preview) ahora bien, luego de haber instalado esta terminal, decidí instalar también el PowerShell 7, y me encontré que queda como PowerShell Core.

Para realizar la configuración de esta terminal, en el menu desplegable (junto al signo de mas) hay una opción de configuración, donde nos lleva a modificar un archivo JSON, estos cambios se producen en tiempo real, y este archivo esta compuesto principalmente por tres secciones.

Encontramos los tipos de ventana que podemos iniciar o commandLine como, Powershell Core, PowerShell, WSL, o CMD, a estos podemos aplicarles unos esquemas para cambiar su apariencia, por ejemplo yo habilite la opción de transparencia cambiando el valor de «useAcrylic» : true

En esta sección es posible cambiar el tamaño y tipo de fuente, el AcrylicOpacity hace referencia al nivel de transparencia en términos de porcentaje, El ColorScheme hace referencia al tema aplicado y el atributo fontFace hace relacion al tipo de fuente asi como FontSize es el tamaño de esta.

Espero sinceramente que les guste esta herramienta, y puedan divertirse ejecutando Scripts en ella.