tag:blogger.com,1999:blog-56433703655844055612024-03-13T12:58:41.773-03:00El Blog del Próximo AdministradorEsteban De Leohttp://www.blogger.com/profile/12585324840724778393noreply@blogger.comBlogger108125tag:blogger.com,1999:blog-5643370365584405561.post-4428487778228825432017-06-28T17:00:00.000-03:002017-06-30T17:53:28.563-03:00Los mismos permisos que...<div style="text-align: justify;">
Active directory no tiene una forma simple de copiar la membresía de grupos de un usuario a otro desde las herramientas administrativas. Si nos piden que un usuario tenga los mismos permisos que otro, podemos recurrir a PowerShell para realizar esta tarea.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
El procedimiento es el siguiente:</div>
<div style="text-align: justify;">
<br /></div>
<ol>
<li><div style="text-align: justify;">
Guardamos los grupos en una variable... <i><b>$grupos=(Get-ADUser "Pires" -Properties Name,MemberOf).memberof</b></i></div>
</li>
<li><div style="text-align: justify;">
Enumeramos los grupos para comprobar el comando anterior... <b><i>$grupos</i></b></div>
</li>
<li><div style="text-align: justify;">
Comprobamos los grupos actuales del usuario que recibirá las nuevas asignaciones... <b><i>Get-ADUser KaraT -Properties * | fl Name, MemberOf</i></b></div>
</li>
<li><div style="text-align: justify;">
Agregamos las nuevas membresías pasando por todos los grupos guardados en la variable... <b><i>foreach ($group in $grupos) {Add-ADGroupMember $group -Members "KaraT"}</i></b></div>
</li>
<li><div style="text-align: justify;">
Comprobamos los nuevos grupos... <b><i>Get-ADUser KaraT -Properties * | fl Name, MemberOf</i></b></div>
</li>
</ol>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
El único grupo que no se copia de esta manera es el grupo default del usuario, que generalmente es "Domain Users".</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Como ejemplo, copiamos la membresía del usuario "Pires" al usuario "KaraT" (Figura 1).</div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-tR7o1cZdtTc/WVayHrCIqSI/AAAAAAAAFB4/rBmXOdDbYZ8Pv0qZM8OEUx1Es-8rJUdSACLcBGAs/s1600/CopyGroups.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="481" data-original-width="831" height="369" src="https://3.bp.blogspot.com/-tR7o1cZdtTc/WVayHrCIqSI/AAAAAAAAFB4/rBmXOdDbYZ8Pv0qZM8OEUx1Es-8rJUdSACLcBGAs/s640/CopyGroups.JPG" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Figura 1</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
Esteban De Leohttp://www.blogger.com/profile/12585324840724778393noreply@blogger.com0tag:blogger.com,1999:blog-5643370365584405561.post-85436020803447614402017-04-19T12:00:00.000-03:002017-05-12T15:26:08.825-03:00Replicación AD Inter-Site ... pero ya!!!<div style="text-align: justify;">
Cuando Active Directory empezó a utilizarse en el año 2000, la conexión de red entre dos sitios de AD podía ser lenta o inestable. Por ese motivo la replicación entre ambos <i>sites</i> no puede ser menor a 15 minutos (Figura 1). </div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-Nt2RbdZ05xQ/WPd9sPQWH9I/AAAAAAAAEks/5QE3MbrFtAQw8IG4sj83fbFqyONfshWVwCLcB/s1600/Capture-A.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://3.bp.blogspot.com/-Nt2RbdZ05xQ/WPd9sPQWH9I/AAAAAAAAEks/5QE3MbrFtAQw8IG4sj83fbFqyONfshWVwCLcB/s400/Capture-A.JPG" width="326" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Figura 1</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Hoy las conexiones son mucho mas rápidas y estables. Si queremos mantener la separación de nuestros <i>sites</i>, pero no queremos esperar 15 minutos para que comience la replicación, podemos configurar el <i>Site Link</i> que une los <i>sites</i> para que éste notifique cuando se produce un cambio. </div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<a href="https://3.bp.blogspot.com/-Nt2RbdZ05xQ/WPd9sPQWH9I/AAAAAAAAEks/5QE3MbrFtAQw8IG4sj83fbFqyONfshWVwCLcB/s1600/Capture-A.JPG" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"></a>En las propiedades del <i>Site Link</i>, dentro de la solapa Attribute Editor podemos buscar el atributo "options" (Figura 2) y darle el valor de "1" (Figura 3). </div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-b6ZH7cqKC7s/WPd9sPbF4CI/AAAAAAAAEk0/IUbMDEmtUzsbdlSSu2U2MicR0RgXx48CgCLcB/s1600/Capture-B.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="335" src="https://1.bp.blogspot.com/-b6ZH7cqKC7s/WPd9sPbF4CI/AAAAAAAAEk0/IUbMDEmtUzsbdlSSu2U2MicR0RgXx48CgCLcB/s400/Capture-B.JPG" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Figura 2</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-XG2Qi9oXP8s/WPd9sMqtjZI/AAAAAAAAEkw/jtOFLrnUofoMXXq9TJaa7OpIoBaxhAcFgCLcB/s1600/Capture-C.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://3.bp.blogspot.com/-XG2Qi9oXP8s/WPd9sMqtjZI/AAAAAAAAEkw/jtOFLrnUofoMXXq9TJaa7OpIoBaxhAcFgCLcB/s400/Capture-C.JPG" width="326" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Figura 3</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
De esta forma nuestro <i>Site Link</i> usará notificaciones ante los cambios en el Active Directory sin esperar los 15 minutos mínimos requeridos en la configuración predeterminada. </div>
Esteban De Leohttp://www.blogger.com/profile/12585324840724778393noreply@blogger.com0tag:blogger.com,1999:blog-5643370365584405561.post-21539345927580574292017-03-26T15:36:00.003-03:002017-03-26T15:36:32.642-03:00Evento en el MUG - Active Directory de 0 a 100Para los que estén por Buenos Aires, el Viernes 7 de Abril de 2017, de 9:30 a 18 hs, en el Auditorio del MUG, Rivadavia 1479 Primer Piso "A". <br /><br />Será una jornada intensiva para profesionales IT en la que veremos los conceptos fundamentales de infraestructura y realizaremos demos en nuestros servidores de Active Directory Domain Services.<br />
<br />
La registración pueden hacerla por medio de este <a href="http://www.mug-it.org.ar/Event.aspx?Event=376" target="_blank">link</a>.<br />
<br />
Esteban De Leohttp://www.blogger.com/profile/12585324840724778393noreply@blogger.com0tag:blogger.com,1999:blog-5643370365584405561.post-87338140159373464202017-03-13T16:00:00.000-03:002017-03-14T09:57:13.113-03:00Server Core en Windows Server 2016<div style="text-align: justify;">
Una nueva característica de Windows Server 2012 había sido la posibilidad de agregar o quitar la interface gráfica a un equipo.<br />
<br /></div>
<div style="text-align: justify;">
Con Windows Server 2016 esta posibilidad fue removida. Por lo que debemos prestar atención al momento de instalación si vamos a utilizar un Server Core o un Server con GUI, ya que cambiar la interface del equipo implica reinstalar el servidor, al igual que sucedía con Windows Server 2008. </div>
Esteban De Leohttp://www.blogger.com/profile/12585324840724778393noreply@blogger.com0tag:blogger.com,1999:blog-5643370365584405561.post-68401872543243510002017-02-28T21:00:00.000-03:002017-03-11T21:40:30.644-03:00DCPromo.exe en Windows Server 2016 !!!<div style="text-align: justify;">
Ya desde Windows Server 2012 se viene anunciando que dcpromo.exe está desenfatizado para promover un nuevo DC en nuestro dominio. Igualmente con Windows Server 2016 aún tenemos posibilidad de utilizarlo. Desde la línea de comandos, con un archivo de respuesta desatendido podemos instalar un DC con dcpromo.exe en Windows Server 2016. La forma de hacerlo es igual que en la versión anterior de Windows Server y podemos leer cómo <a href="http://nextadmin.blogspot.com.ar/2012/03/usando-dcpromoexe-en-un-server-core.html">en un articulo anterior de este blog</a>. </div>
<div style="text-align: justify;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-G16Wdzw5fWk/WMSPqD5qLbI/AAAAAAAAEiE/uSJ2ZaDnZ7EpSaoTmRN84F0Jb5SHEjN3QCLcB/s1600/CaptureA.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="148" src="https://3.bp.blogspot.com/-G16Wdzw5fWk/WMSPqD5qLbI/AAAAAAAAEiE/uSJ2ZaDnZ7EpSaoTmRN84F0Jb5SHEjN3QCLcB/s400/CaptureA.JPG" width="400" /></a></div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
Adicionalmente, dcpromo.exe se puede utilizar para desinstalar los binarios de ADDS, crear o usar una cuenta de equipo para un RODC e incluso para forzar la desinstalación de ADDS en un DC.</div>
Esteban De Leohttp://www.blogger.com/profile/12585324840724778393noreply@blogger.com0tag:blogger.com,1999:blog-5643370365584405561.post-88615158968765124672016-09-14T17:00:00.000-03:002016-09-16T10:48:35.053-03:00User profile cannot be loaded<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-eLfE2f7rsIE/V9m04o2jFZI/AAAAAAAACUM/g52R3OSBu88nD-658b_vE4XkPatqG_8swCEw/s1600/sqm%2B-%2BA.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"></a></div>
<div style="text-align: justify;">
Hoy, uno de los administradores quiso autenticarse en un servidor y recibió un error (Figura 1).</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-eLfE2f7rsIE/V9m04o2jFZI/AAAAAAAACUM/g52R3OSBu88nD-658b_vE4XkPatqG_8swCEw/s1600/sqm%2B-%2BA.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="222" src="https://1.bp.blogspot.com/-eLfE2f7rsIE/V9m04o2jFZI/AAAAAAAACUM/g52R3OSBu88nD-658b_vE4XkPatqG_8swCEw/s400/sqm%2B-%2BA.JPG" width="400" /></a></div>
<div style="text-align: center;">
Figura 1</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
El error me resultaba conocido, y está relacionado con la corrupción del perfil del usuario. Varios artículos indican que se debe entrar en el registro del equipo y borrar una clave que contiene el SID del usuario, la cual finaliza con ".BAK". Pero éste no era el caso, ya que para poder aplicar esa resolución, era necesario que el usuario se hubiera validado al menos una vez en el equipo, para que el perfil pudiera crearse y luego corromperse. </div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<a href="https://4.bp.blogspot.com/-XImXuawc2e8/V9m04yBGBbI/AAAAAAAACUI/paKOBouMPRcBMEfiiCyza6KfmIKTiCgeQCEw/s1600/sqm%2B-%2BB.JPG" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"></a>Buscando otra solución, revisé el Event Viewer y encontré un evento relacionado (Figura 2).</div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-XImXuawc2e8/V9m04yBGBbI/AAAAAAAACUI/paKOBouMPRcBMEfiiCyza6KfmIKTiCgeQCEw/s1600/sqm%2B-%2BB.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="277" src="https://4.bp.blogspot.com/-XImXuawc2e8/V9m04yBGBbI/AAAAAAAACUI/paKOBouMPRcBMEfiiCyza6KfmIKTiCgeQCEw/s400/sqm%2B-%2BB.JPG" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Figura 2</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Al parecer un KB aplicado al equipo cambió los permisos en el archivo que se indica en el Event 1509. La resolución fue modificar los permisos en el archivo para que herede los mismos permisos que el directorio que lo contenía, para que la copia del perfil del nuevo usuario se complete con éxito.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
Esteban De Leohttp://www.blogger.com/profile/12585324840724778393noreply@blogger.com0tag:blogger.com,1999:blog-5643370365584405561.post-35582939429955431452016-04-19T17:00:00.000-03:002016-04-21T17:23:08.328-03:00Buscar permisos en AD<div style="text-align: justify;">
Buscar en Active Directory los permisos que se han asignado a diferentes objetos, es una tarea complicada. En AD existen varios tipos de objeto: OU, usuarios, grupos, cuentas de equipo, etc, y a veces necesitamos saber dónde fue delegada una cuenta. </div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
Para facilitar la búsqueda, podemos utilizar PowerShell!</div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
Como vamos a trabajar con Active Directory, lo primero es importar el modulo de AD (Figura 1) y cambiar la ubicación de trabajo desde el C:\ a AD (Figura 1)</div>
<div style="text-align: justify;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-CdD7oxi9O3c/VxaWaoYJsoI/AAAAAAAABOA/egHxgJSadTssnjhEyCuqVB8623Im1McZQCLcB/s1600/ACL-AD-A.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="https://4.bp.blogspot.com/-CdD7oxi9O3c/VxaWaoYJsoI/AAAAAAAABOA/egHxgJSadTssnjhEyCuqVB8623Im1McZQCLcB/s640/ACL-AD-A.JPG" width="640" /></a></div>
<div style="text-align: center;">
Figura 1</div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
Luego le asignamos a una variable, el valor de todos los objetos de AD (Figura 2).</div>
<div style="text-align: justify;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-og7ZKZH99Wc/VxaWagdPiiI/AAAAAAAABN4/MEFij7SAV3coJ5D76-6i4lXOaj_yZExYQCLcB/s1600/ACL-AD-B.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="113" src="https://1.bp.blogspot.com/-og7ZKZH99Wc/VxaWagdPiiI/AAAAAAAABN4/MEFij7SAV3coJ5D76-6i4lXOaj_yZExYQCLcB/s640/ACL-AD-B.JPG" width="640" /></a></div>
<div style="text-align: center;">
Figura 2</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
Por último, para cada valor de la variable donde tenemos todos los objetos de AD, hacemos una búsqueda de los permisos en su Access Control List (ACL) y mostramos los resultados (Figura 3).</div>
<div style="text-align: justify;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-EoDxWZhy5hM/VxaWa7p4MwI/AAAAAAAABN8/KX-3jHhw07EgFN7Nv3jB-JNy1D7GhSJRwCLcB/s1600/ACL-AD-C.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="321" src="https://2.bp.blogspot.com/-EoDxWZhy5hM/VxaWa7p4MwI/AAAAAAAABN8/KX-3jHhw07EgFN7Nv3jB-JNy1D7GhSJRwCLcB/s640/ACL-AD-C.JPG" width="640" /></a></div>
<div style="text-align: center;">
Figura 3</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div style="text-align: justify;">
cmdlets:</div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
Import-Module ActiveDirectory</div>
<div style="text-align: justify;">
<br /> </div>
<div style="text-align: justify;">
Set-Location AD:</div>
<div style="text-align: justify;">
<br /> </div>
<div style="text-align: justify;">
$allO=(Get-ADObject -Filter * -Properties DistinguishedName).distinguishedname</div>
<div style="text-align: justify;">
<br /> </div>
<div style="text-align: justify;">
foreach ($one in $allO) {(get-acl $one).access |? {$_.IdentityReference -like "*deleo*" }| ft @{Expression={$one};label="Nombre"},IdentityReference,AccessControlType,@{Expression={(Get-ADObject $one).objectClass};label="Type"}}</div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
</div>
Esteban De Leohttp://www.blogger.com/profile/12585324840724778393noreply@blogger.com0tag:blogger.com,1999:blog-5643370365584405561.post-82764257395391369182016-03-21T15:00:00.000-03:002016-03-21T15:57:19.392-03:00Evento en el MUG - Introducción a PowerShell para IT Pros<div style="text-align: justify;">
Para los que estén por Buenos Aires, el Miércoles 6 de Abril de 2016, de 18:30 a 20:30 hs, en el Auditorio del MUG, Rivadavia 1479 Primer Piso "A". <br />
<br />
Será un encuentro introductorio para IT Pros que quieran iniciarse en el mundo de PowerShell. Orientado a administradores de red y técnicos de soporte. No es un evento para desarrolladores, aunque también son bienvenidos.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
El evento es gratuito y puede registrarse en este <a href="http://www.mug-it.org.ar/Event.aspx?Event=311" target="_blank">link</a>.</div>
Esteban De Leohttp://www.blogger.com/profile/12585324840724778393noreply@blogger.com0tag:blogger.com,1999:blog-5643370365584405561.post-69333502685883786632016-03-18T12:00:00.000-03:002016-03-18T15:53:37.095-03:00FlushDNS con problemas<div style="text-align: justify;">
Muchas veces usamos el comando "Ipconfig /FlushDNS" para borrar la lista de nombres almacenada en un equipo, algo tan simple que no parece probable que nos encontremos con un error.</div>
<div style="text-align: justify;">
Sin embargo, hace poco, al intentar borrar la lista de nombres utilizando ese comando me encontré con un error que parecía bastante complicado (Figura 1).</div>
<div style="text-align: justify;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-x6TmFNa4Z8Y/VuwLtCKznqI/AAAAAAAABNM/S4GHYBIWXXELqL-VpkfjzVZGbVH4Wcc1Q/s1600/Flush01.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="181" src="https://3.bp.blogspot.com/-x6TmFNa4Z8Y/VuwLtCKznqI/AAAAAAAABNM/S4GHYBIWXXELqL-VpkfjzVZGbVH4Wcc1Q/s400/Flush01.JPG" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Figura 1</div>
<div style="text-align: center;">
<span style="font-size: xx-small;">Could not flush the DNS Resolver Cache: Function failed during execution.</span></div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
Por suerte, resolverlo resulta mucho más fácil de lo que parece. El problema es que el servicio "DNS Client" no estaba en ejecución, como pudimos ver por la consola de servicios (Figura 2) o por la línea de comandos (Figura 3).</div>
<div style="text-align: justify;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-rfQdzF26zyg/VuwMcWV8NyI/AAAAAAAABNY/ZRU6pSwAZxk7R_S82gIACRKWQnIy8ktgA/s1600/Flush02.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="201" src="https://4.bp.blogspot.com/-rfQdzF26zyg/VuwMcWV8NyI/AAAAAAAABNY/ZRU6pSwAZxk7R_S82gIACRKWQnIy8ktgA/s400/Flush02.JPG" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Figura 2</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-RTqGk0uh4qE/VuwMcdehF6I/AAAAAAAABNU/LDBE9uZghqcPu5UdZhXkLuJEvbzJSHAtg/s1600/Flush03.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="230" src="https://2.bp.blogspot.com/-RTqGk0uh4qE/VuwMcdehF6I/AAAAAAAABNU/LDBE9uZghqcPu5UdZhXkLuJEvbzJSHAtg/s400/Flush03.JPG" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Figura 3</div>
<br />
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
Al iniciar el servicio (En la consola de Servicios, con el comando "Net Start DNSCache" o el comando "SC Start DNSCache") pudimos limpiar exitosamente la lista de nombres almacenados en memoria (Figura 4). </div>
<div style="text-align: justify;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-yGwF2sGQIRY/VuwMcU9E2AI/AAAAAAAABNQ/QjMM_yYVhiAKw09Fsrlk22d18Rx6eWyIg/s1600/Flush04.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="313" src="https://2.bp.blogspot.com/-yGwF2sGQIRY/VuwMcU9E2AI/AAAAAAAABNQ/QjMM_yYVhiAKw09Fsrlk22d18Rx6eWyIg/s400/Flush04.JPG" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Figura 4</div>
Esteban De Leohttp://www.blogger.com/profile/12585324840724778393noreply@blogger.com0tag:blogger.com,1999:blog-5643370365584405561.post-63069809753129449892015-12-21T14:00:00.000-03:002015-12-21T14:52:24.751-03:00Exchange Quota Notification <div style="text-align: justify;">
En versiones de Exchange Server anteriores a 2010 SP1, los usuarios recibían avisos por email cuando se superaba un límite de cuota. Después de Exchange 2010 SP1, <a href="https://technet.microsoft.com/en-us/library/aa998353(v=exchg.160).aspx" target="_blank">el comportamiento del aviso por email cambió</a> y desde Exchange Server 2013 <a href="https://support.microsoft.com/en-us/kb/2819389" target="_blank">el estado de la cuota no es calculado</a> (Figura 1).</div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-ksjVXy2fhac/Vng1sa2RDuI/AAAAAAAABMA/cAr3IUy1gfo/s1600/EmailQuotaA.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="291" src="http://2.bp.blogspot.com/-ksjVXy2fhac/Vng1sa2RDuI/AAAAAAAABMA/cAr3IUy1gfo/s640/EmailQuotaA.JPG" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Figura 1</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
Muchos administradores se encuentran con la necesidad de avisar por email a los usuarios acerca del tamaño de sus buzones. </div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
A continuación les comparto un script que realicé para que se envíe un mail a los usuarios cuando uno de los limites se sobrepasa: </div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
#Coneccion a Server Exchange Cambiar el nombre del server Exchange en -ConnectionUri<br />
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://FQDNServerName/PowerShell/ -Authentication Kerberos <br />
Import-PSSession $Session</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
#Parametros a usar<br />
$smtpServer="ExchangeServer.com"<br />
$from = "Administrador <admin dominio.com="">"<br />$adminmail ="Admin@dominio.com"</admin></div>
<div style="text-align: justify;">
#Buscar todos los usuarios con Mailbox - Aqui se puede definir un subset de usuarios para hacer pruebas<br />
$Users=Get-Mailbox * | Select Alias</div>
<div style="text-align: justify;">
<br />
#Revisa cada usuario y toma acciones<br />
foreach ($User in $Users) {</div>
<div style="text-align: justify;">
<br />
$UserData= get-Mailbox $User.alias | Select Name,PrimarySmtpAddress,Identity,Database,UseDatabaseQuotaDefaults,ProhibitSendQuota,ProhibitSendReceiveQuota,IssueWarningQuota</div>
<div style="text-align: justify;">
$Size= get-mailbox $UserData.Identity | Get-MailboxStatistics |Select TotalItemSize</div>
<div style="text-align: justify;">
$BaseData= get-mailboxdatabase $UserData.Database | Select Name,ProhibitSendQuota,ProhibitSendReceiveQuota,IssueWarningQuota</div>
<div style="text-align: justify;">
If( $UserData.UseDatabaseQuotaDefaults -like $false) {<br />
$Lim1= $UserData.ProhibitSendReceiveQuota<br />
$Lim2= $UserData.ProhibitSendQuota<br />
$Lim3= $UserData.IssueWarningQuota<br />
}<br />
Else {<br />
$Lim1= $BaseData.ProhibitSendReceiveQuota<br />
$Lim2= $BaseData.ProhibitSendQuota<br />
$Lim3= $BaseData.IssueWarningQuota<br />
}<br />
<br />
If( $Lim1.IsUnlimited -and $Lim2.IsUnlimited -and $Lim3.IsUnlimited) {<br />
$res= [Microsoft.Exchange.Data.Mapi.StorageLimitStatus]::NoChecking<br />
}<br />
Else {</div>
<div style="text-align: justify;">
$res= $null<br />
If( -not $Lim1.IsUnlimited -and $Size.totalItemSize.Value -gt $Lim1) {<br />
$res= [Microsoft.Exchange.Data.Mapi.StorageLimitStatus]::MailboxDisabled<br />
}<br />
Else {<br />
If( -not $Lim2.IsUnlimited -and $Size.totalItemSize.Value -gt $Lim2) {<br />
$res= [Microsoft.Exchange.Data.Mapi.StorageLimitStatus]::ProhibitSend<br />
$Porce=100*($Size.totalItemSize.Value.toMB()/$Lim2.Value.toMB())<br />
$limite="no poder enviar mas correos."<br />
}<br />
Else {<br />
If( -not $Lim3.IsUnlimited -and $Size.totalItemSize.Value -gt $Lim3) {<br />
$res= [Microsoft.Exchange.Data.Mapi.StorageLimitStatus]::IssueWarning<br />
$Porce=100*($Size.totalItemSize.Value.toMB()/$Lim2.Value.toMB())<br />
$limite="advertencia."<br />
}<br />
Else {<br />
$res= [Microsoft.Exchange.Data.Mapi.StorageLimitStatus]::BelowLimit<br />
$Porce=100*($Size.totalItemSize.Value.toMB()/$Lim1.Value.toMB())<br />
$limite="OK"<br />
}<br />
}<br />
}<br />
}</div>
<div style="text-align: justify;">
<br />
$Usuario=$UserData.Name<br />
$email=$UserData.PrimarySmtpAddress<br />
$Porce=[math]::Round($Porce,2)</div>
<div style="text-align: justify;">
#Envio de Email Email</div>
<div style="text-align: justify;">
# Email Subject<br />
$subject="Advertencia de espacio de buzon"<br />
<br />
# Email body, con formato HTML<br />
$body ="<br />
Estimado $Usuario,<br />
<.p> Su buzon de correo llego al limite de $limite<.br><br />
El porcentaje actual de ocupacion es de $Porce %, por favor elimine correos innecesarios<.br><br />
Puede consultar la documentacion en LinkADocumento <.br> <br />
<.p>Gracias, <.br> <br />
<./P>"</div>
<div style="text-align: justify;">
# Envia Email<br />
if ($limite -ne "OK"){<br />
Send-Mailmessage -smtpServer $smtpServer -from $from -to $email -subject $subject -body $body -bodyasHTML -priority High </div>
<div style="text-align: justify;">
# Envia Email al administrador para control/test<br />
#Send-Mailmessage -smtpServer $smtpServer -from $from -to $adminmail -subject $subject -body $body -bodyasHTML -priority High </div>
<div style="text-align: justify;">
}<br />
}</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Nota: En el script, los Tags HTML que se utilizan dentro de la variable $body, fueron modificados agregándoles un "." para que no se apliquen al formato del articulo y puedan ser vistos por el lector. Todos los "." de los Tags deben ser removidos antes de utilizar el script.</div>
<div style="text-align: justify;">
<br /></div>
Esteban De Leohttp://www.blogger.com/profile/12585324840724778393noreply@blogger.com0tag:blogger.com,1999:blog-5643370365584405561.post-69127444798854657422015-11-25T11:00:00.000-03:002015-11-25T11:34:22.790-03:00Evento de VLans & Network en el MUG<div style="text-align: justify;">
El Miércoles 16 de diciembre de 2015, de 18:30 a 21:00 hs, en el Auditorio del MUG, Rivadavia 1479 Primer Piso "A", Buenos Aires. Vamos a estar con <a href="http://www.dlssolutions.net/" target="_blank">Rodrigo De Los Santos</a> para ver administración de redes separadas dentro de VLANs, especialmente como configurar un switch para poder utilizar múltiples segmentos en conjunto con Windows Server sin que entren en conflicto. </div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
El evento es gratuito y puede registrarse en este <a href="http://www.mug-it.org.ar/Event.aspx?Event=289" target="_blank">link</a>.</div>
Esteban De Leohttp://www.blogger.com/profile/12585324840724778393noreply@blogger.com0tag:blogger.com,1999:blog-5643370365584405561.post-39512936830036050782015-11-11T14:00:00.000-03:002015-11-11T15:47:12.103-03:00Copiar Quotas de FSRM a otro server<div style="text-align: justify;">
En un Windows Server podemos definir límites de capacidad de almacenamiento por directorio con Quota Management. Los límites pueden ser informativos o estrictos. Cuando un límite es alcanzado se puede registrar un evento, enviar un mail al usuario, al administrador, o prohibir la ejecución de la operación. </div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Todas las configuraciones son locales del servidor. Pero en algunos casos necesitaremos pasar las configuraciones a un nuevo equipo, como en el caso de una migración, o a otro servidor que está replicado, como es el caso de un ambiente con DFS-R. No hay posibilidad nativa de exportar/importar las Quotas, pero podemos realizar una operación similar con PowerShell.</div>
<div style="text-align: justify;">
<br />
Primero guardamos la información de qué directorio o directorios queremos controlar (Figura 1), el limite, y si la cuota definida es informativa (Soft Quota) o restrictiva (Hard Quota). <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-elPixibvOsU/VkOEMdYl0VI/AAAAAAAABLc/JcGsfhKArJ4/s1600/Quota-A.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="106" src="http://3.bp.blogspot.com/-elPixibvOsU/VkOEMdYl0VI/AAAAAAAABLc/JcGsfhKArJ4/s640/Quota-A.JPG" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Figura 1</div>
</div>
<div style="text-align: justify;">
<em>Get-FSRMQouta | Select Path, Size, SoftLimit | Export-Csv "Directorio\Archivo"<directorio rchivo=""> -NoTypeInformation</directorio></em> </div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
Luego, en el servidor de destino creamos un Template (Figura 2), en el cual configuramos las notificaciones que queremos recibir. No importa el límite que especifiquemos (en este caso 1000 TB), porque los limites que se aplicarán serán los que importemos del equipo original.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-e0DlOzCpn8Y/VkOD5vR-OWI/AAAAAAAABLY/CWwxR0VcXFU/s1600/Quota-CB.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="http://2.bp.blogspot.com/-e0DlOzCpn8Y/VkOD5vR-OWI/AAAAAAAABLY/CWwxR0VcXFU/s640/Quota-CB.JPG" width="532" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Figura 2</div>
<br />
</div>
<div style="text-align: justify;">
Una vez creado el Template, en el servidor de destino importamos el archivo que exportamos desde el servidor de origen y lo guardamos en una variable ($a en este caso). Por último, para cada entrada guardada en la variable creamos una entrada de Quota según lo definido en el archivo en donde indicamos el directorio, el limite y en qué Template está basado (Figura 3)</div>
<div class="separator" style="text-align: justify;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-6nkHA7XlolM/VkN56qON7LI/AAAAAAAABK0/3PIzOHo5G_s/s1600/Quota-B.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="114" src="http://2.bp.blogspot.com/-6nkHA7XlolM/VkN56qON7LI/AAAAAAAABK0/3PIzOHo5G_s/s640/Quota-B.JPG" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Figura 3</div>
<div class="separator" style="text-align: justify;">
</div>
<div class="separator" style="text-align: justify;">
</div>
Esteban De Leohttp://www.blogger.com/profile/12585324840724778393noreply@blogger.com0tag:blogger.com,1999:blog-5643370365584405561.post-42210760764301172992015-09-24T17:00:00.000-03:002015-09-24T23:33:17.264-03:00Dude... where's my .nk2 ?En la ubicación "C:\Users\NOMBREDEUSUARIO\AppData\Roaming\Microsoft\Outlook", Outlook guardaba un listado de las direcciones de email que habíamos utilizado recientemente en un archivo con extensión .nk2.<br />
<br />
Cuando se realizaba un cambio de PC, el archivo .nk2 podía moverse a otro equipo para conservar ese listado de direcciones, y algunas veces debíamos borrarlo para reparar ciertos errores o conductas no deseadas de Outlook (por ejemplo, cuando migrábamos el dominio de mails y no queríamos ver las direcciones antiguas).<br />
<br />
En Outlook 2013, este archivo ya no existe, pero igualmente podemos trabajar con esta lista de direcciones de email.<br />
<br />
Si se desea importar un archivo .nk2 desde una versión anterior a Outlook 2013 debemos:<br />
<br />
1-Copiar el archivo .nk2 en la ruta "%appdata%\Microsoft\Outlook".<br />
2-Asegurarse de que el archivo coincida con el nombre del perfil.<br />
3-Ejecutar Outlook desde la línea de comando con el parámetro correspondiente <strong>"</strong><span class="sbody-userinput"><strong>outlook.exe /importnk2"</strong>.</span><br />
<div>
<span class="sbody-userinput"></span><br />
<span class="sbody-userinput">Si queremos borrar completamente la información de direcciones recientes:</span></div>
<div>
<br />
1-Ir al Menú: File-->Options-->Mail</div>
2-Seleccionar "Empty Auto-Complete List" (Figura 1)<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-eDJX0iitoYo/VgBiaYp3psI/AAAAAAAAAvM/ksQFswBOqeE/s1600/nk2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="332" src="http://4.bp.blogspot.com/-eDJX0iitoYo/VgBiaYp3psI/AAAAAAAAAvM/ksQFswBOqeE/s640/nk2.JPG" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Figura 1</div>
<span id="goog_645990351"></span><span id="goog_645990352"><br /></span>
Esteban De Leohttp://www.blogger.com/profile/12585324840724778393noreply@blogger.com0tag:blogger.com,1999:blog-5643370365584405561.post-43601730799821059452015-07-24T17:01:00.002-03:002015-07-24T17:02:38.504-03:00Evento en el MUG - AD DS de Cero hasta la Nube<div style="text-align: justify;">
Junto con Javier Schamber vamos a realizar un evento en el MUG de Buenos Aires en donde mostraremos Active Directory Domain Services desde cero hasta mostrar como instalar Domain Controles en Azure.<br />
<br />
Además vamos a contar con la paticipación especial uno de los IT Pros más reconocido en el país, <a href="http://www.dlssolutions.net/" target="_blank"><span style="color: #249fa3;">Rodrigo De Los Santos</span></a>.</div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
Para inscribirse, pueden visitar el sitio del <a href="http://www.mug-it.org.ar/Event.aspx?Event=251" target="_blank">MUG</a>. </div>
Esteban De Leohttp://www.blogger.com/profile/12585324840724778393noreply@blogger.com0tag:blogger.com,1999:blog-5643370365584405561.post-79685401604243596092015-07-10T10:00:00.000-03:002015-07-10T16:55:25.750-03:00No todo lo que un mailbox necesita es Set-Mailbox<div style="text-align: justify;">
En un entorno Exchange, cuando queremos ver la propiedades de un mailbox, utilizamos el cmdlet <em>Get-Mailbox,</em> y para configurarlo utilizamos <em>Set-Mailbox</em>. </div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
Recientemente me consultaron cómo se podrían deshabilitar los protocolos de conexión Imap4 y Pop3 para todos usuarios. La primera opción fue crear una GPO en la cual los servicios relacionados con ambos protocolos se deshabilitaran (Figura 1).</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-WQbEho9_KJ0/VZ_Ceuch5lI/AAAAAAAAAuE/vODZ8wIaXk8/s1600/Imap%2By%2BPop.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="47" src="http://2.bp.blogspot.com/-WQbEho9_KJ0/VZ_Ceuch5lI/AAAAAAAAAuE/vODZ8wIaXk8/s400/Imap%2By%2BPop.JPG" width="400" /></a></div>
<div style="text-align: center;">
Figura 1</div>
<br />
<div style="text-align: justify;">
Luego me consultaron por la posibilidad de deshabilitar múltiples usuarios de forma centralizada. La dificultad consiste en que Set-Mailbox no permite habilitar o deshabilitar protocolos de conexión. Esto se debe a que las configuraciones de conexión de acceso de un mailbox se ven y se modifican respectivamente con los cmdlets Get-CASMailbox y Set-CASMailbox.</div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
Una vez que sepamos qué cmdlets utilizar, simplemente debemos crear una sentencia que sirva a nuestro propósito. </div>
<br />
<em>Get-CASMailbox * | Set-CASMailbox -ImapEnabled $False -PopEnabled $False</em><br />
<br />
Con el cmdlet previo, deshabilitamos Imap y Pop para todos los usuarios, y si reemplazamos el "*" por el filtro que queremos, podemos realizar la misma acción en un sub-set de usuarios.Esteban De Leohttp://www.blogger.com/profile/12585324840724778393noreply@blogger.com0tag:blogger.com,1999:blog-5643370365584405561.post-76209318421025440452015-06-30T12:00:00.000-03:002015-07-06T16:27:36.930-03:00¿Cómo puedo ser "NT Authority"?<div style="text-align: justify;">
Existen algunos momentos en los cuales no basta con ser administrador del equipo. No importa si es por un error al asignar un permiso, un programa que falló, una mala desinstalación, o un equipo que no sabemos por qué manos pasó... La realidad es que aunque creemos que los administradores somos los que tenemos más autoridad sobre el equipo, algunas veces nos encontramos con un "Acceso Negado".</div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
Quien verdaderamente tiene todos los permisos sobre las claves de registro, archivos, directorios, etc es la cuenta System (nt authority\system). </div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
Esta cuenta existe en todos los equipos Windows, pero no podemos utilizarla si no tenemos la posibilidad de ingresar el password de la cuenta.<br />
<br /></div>
<div style="text-align: justify;">
Si utilizamos PSExec (La herramienta de <a href="https://technet.microsoft.com/en-us/sysinternals/bb545021.aspx" target="_blank">Sysinternals</a>) podemos acceder como System.</div>
<div style="text-align: justify;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-rSrHsqqGGUY/VZamFpwogGI/AAAAAAAAAtY/J4JkBIBly-Y/s1600/System.%2BAjpg.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="281" src="http://3.bp.blogspot.com/-rSrHsqqGGUY/VZamFpwogGI/AAAAAAAAAtY/J4JkBIBly-Y/s640/System.%2BAjpg.jpg" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Figura 1</div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
Al ejecutar "<strong>PSExec.exe -s </strong><a href="file://nombredelequipo/"><strong>\\NombreDelEquipo</strong></a><strong> cmd</strong>", accedemos remotamente a una consola de comandos en el equipo remoto, tal como lo muestra la Figura 1. Aquí podemos ver que nos conectamos remotamente a otro equipo con un CMD con permisos de System.</div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
Si queremos utilizarlo en el equipo local, debemos ejecutar "<strong>PSExec -s -i -d cmd</strong>".</div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
En cualquiera de los dos casos, debemos ejecutarlo desde una consola con permisos de Administrador (Figura 2). </div>
<div style="text-align: justify;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-kanAH0-kIxQ/VZawRxPXKpI/AAAAAAAAAto/aMmlfp0hk-U/s1600/System.%2BBjpg.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="186" src="http://3.bp.blogspot.com/-kanAH0-kIxQ/VZawRxPXKpI/AAAAAAAAAto/aMmlfp0hk-U/s400/System.%2BBjpg.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Figura 2</div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
</div>
Esteban De Leohttp://www.blogger.com/profile/12585324840724778393noreply@blogger.com0tag:blogger.com,1999:blog-5643370365584405561.post-92221964098996160912015-05-06T15:00:00.000-03:002015-05-06T16:27:44.566-03:00Boot a VHD / VHDX con UEFI<div style="text-align: justify;">
Recientemente intentamos virtualizar unas desktop para pasarlas a una infraestructura de VDI. Para aprovechar que el SO era Windows 8.1, creamos los equipos virtuales en Hyper-V como equipos de Generación 2. </div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
Esta nueva generación de máquinas virtuales realiza el inicio por UEFI, por lo que nos encontramos con algunos problema a la hora del inicio de los equipos.</div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
Primero, el desktop que antes iniciaba por BIOS ahora no iniciaba por UEFI, adicionalmente no podíamos utilizar Bcdedit para manejar las opciones de inicio (Figura 1).</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-rX9qGxHs7aQ/VUkhtBLVQUI/AAAAAAAAAs0/wRZf4YR7Occ/s1600/Boot%2BUEFI%2BA.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-rX9qGxHs7aQ/VUkhtBLVQUI/AAAAAAAAAs0/wRZf4YR7Occ/s400/Boot%2BUEFI%2BA.jpg" height="116" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Figura 1</div>
<br />
Inicialmente utilizamos Diskpart para formatear la partición de System con sistema de archivo FAT y activarla.<br />
<br />
Por último, debimos utilizar Bcdboot, incluido en el directorio System32 de la instalación de Windows y lo ejecutamos con algunos parámetros (Figura 2).<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-AtQgPVc5uHE/VUkhtGATMnI/AAAAAAAAAsw/tTKI4F-wGqo/s1600/Boot%2BUEFI%2BB.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-AtQgPVc5uHE/VUkhtGATMnI/AAAAAAAAAsw/tTKI4F-wGqo/s400/Boot%2BUEFI%2BB.jpg" height="125" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Figura 2</div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-size: x-small;">bcdboot.exe <sodrive>:\Windows /s <bootdrive> /f All</bootdrive></sodrive></span></div>
<br />
<br />
Indicamos el disco donde está Windows <sodrive>, el disco de inicio, <bootdrive> y especificamos que el SO puede iniciar con BIOS y UEFI "/f ALL".</bootdrive></sodrive><br />
<br />
Siguiendo esos pasos el disco que antes era físico e iniciaba por BIOS, ahora pudo iniciar por UEFI como parte de un equipo virtual.Esteban De Leohttp://www.blogger.com/profile/12585324840724778393noreply@blogger.com0tag:blogger.com,1999:blog-5643370365584405561.post-57924970282211733302014-11-25T10:00:00.000-03:002014-12-18T10:07:08.356-03:00Remove-MoveRequest falla con AccessDeniedException en Exchange Server <div style="text-align: justify;">
Durante una transición de Exchange Server de 2010 a Exchange Server 2013 nos encontramos con un problema cuando se intentó mover el "Archive" de un usuario a otra MailboxDatabase.</div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
En un principio, obtuvimos un error que indicaba que ya existía un MoveRequest anterior, por lo que lo verificamos y lo intentamos eliminar (Figura 1).</div>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-y52Ci7wUI5M/VGIQK0QMPVI/AAAAAAAAArY/3hrWHXy5MXo/s1600/Remove1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="171" src="https://2.bp.blogspot.com/-y52Ci7wUI5M/VGIQK0QMPVI/AAAAAAAAArY/3hrWHXy5MXo/s640/Remove1.jpg" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Figura 1</div>
<br />
<div style="text-align: justify;">
El error de AccessDeniedException nos hizo dudar, debido a que la cuenta con la que realizabamos la operación era miembro del grupo de RBAC "Organization Management". Finalmente encontramos que la cuenta en algún momento de la transición había sido movida a Exchange Server 2013 y luego vuelto a Exchange Server 2010.</div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
Para resolver nuestro problema ejecutamos el cmdlet "Remove-MoveRequest" en Exchange Server 2013 (Figura 2).</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-2MIz2dj-qI4/VJLRbAS4x7I/AAAAAAAAAr4/LWMEcK1_R4s/s1600/Remove2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-2MIz2dj-qI4/VJLRbAS4x7I/AAAAAAAAAr4/LWMEcK1_R4s/s1600/Remove2.jpg" height="92" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
Figura 2</div>
<br />
<br />
<div style="text-align: justify;">
Con eso pudimos volver a la EMS de Exchange Server 2010 y realizar el "New-MoveRequest" (Figura 3).</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-ffvC8vaTckc/VGIQKxN_WPI/AAAAAAAAArU/EEmLJZ9Pcxg/s1600/Remove3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="66" src="https://4.bp.blogspot.com/-ffvC8vaTckc/VGIQKxN_WPI/AAAAAAAAArU/EEmLJZ9Pcxg/s640/Remove3.jpg" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Figura 3</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<br />
<br />Esteban De Leohttp://www.blogger.com/profile/12585324840724778393noreply@blogger.com0tag:blogger.com,1999:blog-5643370365584405561.post-11464632818696619972014-10-27T12:00:00.000-03:002014-10-29T11:36:05.989-03:00Modificar TTL para un solo registro en la zona DNS<div style="text-align: justify;">
Una de las opciones de configuración en una zona DNS es el tiempo de vida de los registros (TTL o Time To Live), el valor ingresado en el registro SOA es válido para todos los registros de la zona (Figura 1).</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-wKb7rysJHbY/VE5Y6iEIQWI/AAAAAAAAAq8/mpKPde9pTEs/s1600/DNS-A.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-wKb7rysJHbY/VE5Y6iEIQWI/AAAAAAAAAq8/mpKPde9pTEs/s1600/DNS-A.JPG" height="320" width="264" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Figura 1</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div style="text-align: justify;">
Sin embargo, en algún caso, puede ser necesario querer variar el TTL para un registro en particular. En las propiedades del registro no se ve la posibilidad de cambiarlo (Figura 2).</div>
<div style="text-align: justify;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-fM6mdIcBUgs/VE5Wkqp_PXI/AAAAAAAAAqM/HoKC_VKqMlw/s1600/DNS-B.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-fM6mdIcBUgs/VE5Wkqp_PXI/AAAAAAAAAqM/HoKC_VKqMlw/s1600/DNS-B.JPG" height="320" width="286" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Figura 2</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div style="text-align: justify;">
Para poder cambiar el TTL de un solo registro primero hay que activar las opciones avanzadas en la consola de DNS (Figura 3) y luego, al abrir las propiedades del registro, tenemos presente esa opción (Figura 4). </div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-ovtpb8KDzvA/VE5Wk6p7R2I/AAAAAAAAAqQ/4idsGt3LKyQ/s1600/DNS-C.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-ovtpb8KDzvA/VE5Wk6p7R2I/AAAAAAAAAqQ/4idsGt3LKyQ/s1600/DNS-C.JPG" height="246" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Figura 3</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-7bpdjw7Aje4/VE5WkwEk1WI/AAAAAAAAAqU/YWijnT62lMs/s1600/DNS-D.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-7bpdjw7Aje4/VE5WkwEk1WI/AAAAAAAAAqU/YWijnT62lMs/s1600/DNS-D.JPG" height="320" width="285" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Figura 4</div>
<br />
<div style="text-align: justify;">
Podemos especificar cualquier valor, que será válido solo para ese registro. Si utilizamos <strong>nslookup</strong> en modo de debug (Figura 5), podemos ver que cuando hacemos una consulta por el registro (A) que modificamos, el TTL del registro es diferente al de la zona (Figura 6).</div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-deRDI2IMeFg/VE5WlfDwcNI/AAAAAAAAAqg/IXlupQ08vRk/s1600/DNS-E.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-deRDI2IMeFg/VE5WlfDwcNI/AAAAAAAAAqg/IXlupQ08vRk/s1600/DNS-E.JPG" height="108" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Figura 5</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-JEv1Hn5dpoQ/VE5WlmysRTI/AAAAAAAAAqk/9j99USjzIyY/s1600/DNS-F.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-JEv1Hn5dpoQ/VE5WlmysRTI/AAAAAAAAAqk/9j99USjzIyY/s1600/DNS-F.JPG" height="640" width="592" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Figura 6</div>
Esteban De Leohttp://www.blogger.com/profile/12585324840724778393noreply@blogger.com0tag:blogger.com,1999:blog-5643370365584405561.post-16935036214723646662014-04-23T17:00:00.000-03:002014-04-24T16:22:44.858-03:00Borrar cuenta de equipo que es un contenedor<div class="separator" style="clear: both; text-align: justify;">
Cuando quisimos borrar un equipo desde el Active Directory Users And Computers (ADUC) nos hemos encontrado con un mensaje que informaba que el objeto era un contenedor, y dentro de éste había otros objetos (Figura 1), similar a cuando borramos una OU.</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-vQoPTewGqhA/U1f7dFS0VUI/AAAAAAAAAnY/73GOL-myvS8/s1600/SubTree+A.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-vQoPTewGqhA/U1f7dFS0VUI/AAAAAAAAAnY/73GOL-myvS8/s1600/SubTree+A.jpg" height="260" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-size: xx-small;">Object contains other objects. Are you sure you want to delefe object and all of the objects it contains</span></div>
<div class="separator" style="clear: both; text-align: center;">
Figura 1</div>
<br />
Si queremos saber qué objetos hay dentro de este objeto, debemos seleccionar <strong>View</strong> y luego <strong>Users, Contacts, Groups and Computers as containers</strong> dentro del ADUC (Figura 2).<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-N67EAADqJ9E/U1f7dAkRqdI/AAAAAAAAAnU/dPkJDRi6l0Q/s1600/SubTree+C.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-N67EAADqJ9E/U1f7dAkRqdI/AAAAAAAAAnU/dPkJDRi6l0Q/s1600/SubTree+C.jpg" height="287" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Figura 2</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: justify;">
</div>
<div class="separator" style="clear: both; text-align: justify;">
Luego de activar esta opción, podemos ver en el ADUC que la cuenta de equipo contaba con algún ServiceConnectionPoint (Figura 3), debido a que era un Exchange Server 2010. </div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-k4Fz41kLM7U/U1f7c3xz8VI/AAAAAAAAAnQ/muZ0Zv73wP8/s1600/SubTree+B.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-k4Fz41kLM7U/U1f7c3xz8VI/AAAAAAAAAnQ/muZ0Zv73wP8/s1600/SubTree+B.jpg" height="129" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Figura 3</div>
<br />
Una vez que comprobamos que efectivamente no es necesario conservar esa información, podemos borrar la cuenta sin problemas.Esteban De Leohttp://www.blogger.com/profile/12585324840724778393noreply@blogger.com0tag:blogger.com,1999:blog-5643370365584405561.post-12916623485820091402014-04-08T07:00:00.000-03:002014-04-08T09:46:17.531-03:00So long, and thanks for all the fish<div style="text-align: justify;">
Casi todo el mundo está enterado de que hoy, 8 de Abril de 2014, se termina <a href="http://support.microsoft.com/lifecycle/?p1=3223" target="_blank">el soporte de Windows XP</a>.</div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
Pero tal vez para algunos sea una sorpresa que hoy termina también el soporte para <a href="http://support.microsoft.com/lifecycle/?p1=2488" target="_blank">Office 2003</a> y <a href="http://support.microsoft.com/lifecycle/?p1=1773" target="_blank">Microsoft Exchange 2003</a>, aunque todavía existen varias instalaciones de estos productos, y todos ellos continúan en funcionamiento. Seguramente más de un lector de este blog recordará las horas invertidas para lograr la certificación en estos productos, el trabajo para automatizar el despliegue y las llamadas atendidas para explicar cómo funcionan. </div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
Espero que todos estén terminando de migrar o hayan finalizado la migración a tecnologías más modernas. De todos modos, no va a ser tarea fácil dejar de cruzarse con alguno de estos productos, ya que los tres fueron ampliamente adoptados en numerosas organizaciones de variada magnitud. </div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-pMa_AiqO_e8/Uz7YfNH2kfI/AAAAAAAAAnA/szF5NoCq4oM/s1600/Bye+Bye+Exchange.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-pMa_AiqO_e8/Uz7YfNH2kfI/AAAAAAAAAnA/szF5NoCq4oM/s1600/Bye+Bye+Exchange.jpg" height="480" width="640" /></a></div>
Esteban De Leohttp://www.blogger.com/profile/12585324840724778393noreply@blogger.com0tag:blogger.com,1999:blog-5643370365584405561.post-50517625080089504272014-03-18T15:00:00.000-03:002014-03-19T09:57:15.140-03:00Como listar miembros de un grupo en multiples dominios con Get-ADGroupMember<div style="text-align: justify;">
Si alguna vez han intentado buscar objetos en un AD con múltiples dominios, seguramente utilizaron para ello un Global Catalog como indica un <a href="http://nextadmin.blogspot.com.ar/2013/05/buscar-objectos-en-todo-el-ad-con.html" target="_blank">artículo anterior</a> de este blog. Pero si trataron de ver qué usuarios pertenecen a un determinado grupo, seguramente se habrán encontrado con algún problema.</div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
Como siempre, antes de utilizar un cmdlet de AD, es necesario importar el módulo (Figura 1). </div>
<div style="text-align: justify;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-9X7GIivCrW0/Uyhe1S9hM8I/AAAAAAAAAlw/ZU4lkdrdm7c/s1600/Get-AdGroupMember+0.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-9X7GIivCrW0/Uyhe1S9hM8I/AAAAAAAAAlw/ZU4lkdrdm7c/s1600/Get-AdGroupMember+0.bmp" height="146" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-size: x-small;"><strong><em>Import-Module ActiveDirectory</em></strong></span></div>
<div class="separator" style="clear: both; text-align: center;">
Figura 1</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: justify;">
Ya con el módulo importado en la sesión de PowerShell, podemos utilizar Get-ADGroup para encontrar información del grupo. Si consultamos por un grupo de nuestro propio dominio no hay mayor dificultad, pero si el grupo está en un dominio distinto no veremos resultados (Figura 2)</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-eS6vx1dqjrc/Uyhe1jgrgUI/AAAAAAAAAls/U3jbOeBnrh4/s1600/Get-AdGroupMember+1.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-eS6vx1dqjrc/Uyhe1jgrgUI/AAAAAAAAAls/U3jbOeBnrh4/s1600/Get-AdGroupMember+1.bmp" height="37" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Figura 2</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: justify;">
Para poder consultar la información de Get-ADGroup de un grupo que pertenece a un dominio distinto de aquel en el cual estamos autenticados, debemos especificar el server que queremos consultar, y aclarar que queremos utilizar el puerto de Global Catalog (Figura 3).</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-FGKz3RMaKtA/Uyhe17IkcWI/AAAAAAAAAl8/pUXs1KbyFU4/s1600/Get-AdGroupMember+2.bmp" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-FGKz3RMaKtA/Uyhe17IkcWI/AAAAAAAAAl8/pUXs1KbyFU4/s1600/Get-AdGroupMember+2.bmp" height="147" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<strong><span style="font-size: x-small;"><em>Get-ADGroup -Filter {name -like</em> "NombreDelGrupo"<em>}-Server:</em>"NombreDelServer:PuertodeGC"</span></strong></div>
<div class="separator" style="clear: both; text-align: center;">
Figura 3</div>
<br />
Con la información del grupo podemos buscar los miembros, pero si tratamos de realizar un pipe entre los cmdlets Get-ADGroup y Get-ADGroupMember obtendremos un error (Figura 4).<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-nuq1C-vjed0/Uyhe2Zp-iYI/AAAAAAAAAmA/cWFW3-FurW4/s1600/Get-AdGroupMember+3.bmp" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-nuq1C-vjed0/Uyhe2Zp-iYI/AAAAAAAAAmA/cWFW3-FurW4/s1600/Get-AdGroupMember+3.bmp" height="90" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Figura 4</div>
<br />
Especificar un Global Catalog no ayuda de mucho: especificar un server de otro dominio nos indica que no encuentra el grupo; especificar un server del mismo dominio, nos indica que la operación no está soportada en un Global Catalog (Figura 5).<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-OEptbtQrIdc/UymT9lFt7aI/AAAAAAAAAms/Bx2ck0_Qz9s/s1600/Get-AdGroupMember+4.bmp" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-OEptbtQrIdc/UymT9lFt7aI/AAAAAAAAAms/Bx2ck0_Qz9s/s1600/Get-AdGroupMember+4.bmp" height="136" width="640" /></a></div>
<div style="clear: both; text-align: center;">
Figura 5</div>
<br />
<div style="text-align: justify;">
La solución (Figura 6) es que no hay que especificar un server en el parámetro "<em><strong>-Server</strong></em>", sino que hay que indicar el dominio al que pertenece el grupo (Información que obtuvimos en la consulta realizada en la Figura 3).</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-iR8rXm_KeiE/Uyhe3S8jCVI/AAAAAAAAAmQ/-87DLcsYzCw/s1600/Get-AdGroupMember+5.bmp" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-iR8rXm_KeiE/Uyhe3S8jCVI/AAAAAAAAAmQ/-87DLcsYzCw/s1600/Get-AdGroupMember+5.bmp" height="138" width="640" /></a></div>
<div style="clear: both; text-align: center;">
Figura 6</div>
<br />
<br />
Si realizamos un pipe entre ambos cmdlets, podremos obtener información de cada usuario miembro del grupo (Figura 7).<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-7yctPv67ZVk/Uyhe3mxNZpI/AAAAAAAAAmc/zUiv-ad8QHk/s1600/Get-AdGroupMember+6.bmp" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-7yctPv67ZVk/Uyhe3mxNZpI/AAAAAAAAAmc/zUiv-ad8QHk/s1600/Get-AdGroupMember+6.bmp" height="100" width="640" /></a></div>
<div style="clear: both; text-align: center;">
Figura 7</div>
<div style="text-align: justify;">
</div>
<br />Esteban De Leohttp://www.blogger.com/profile/12585324840724778393noreply@blogger.com4tag:blogger.com,1999:blog-5643370365584405561.post-32922699207328137522014-02-17T19:00:00.000-03:002014-05-23T16:08:33.118-03:00Editar todas las filas en SQL 2008 / R2<div class="separator" style="clear: both; text-align: justify;">
A partir de SQL Server 2008 ya no es posible ver la opción de editar todas las filas de una tabla en forma predeterminada (Figura 1).</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-xzcIVyITFlo/UwJtcwUSwUI/AAAAAAAAAlE/2c2JdBra3L0/s1600/All+SQL+A.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-xzcIVyITFlo/UwJtcwUSwUI/AAAAAAAAAlE/2c2JdBra3L0/s1600/All+SQL+A.bmp" height="300" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Figura 1</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: justify;">
Sin embargo podemos modificar este comportamiento desde <strong><em>Options</em></strong> en el menú <em><strong>Tools </strong></em>(Figura 2) . En <strong><em>SQL Server Object Explorer</em></strong> podemos seleccionar los valores que se verán en el menú contextual del Microsoft SQL Server Management Studio (Figura 3).</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-x5DqTBobgb0/UwJtcJJck4I/AAAAAAAAAk8/I2-riuk_itU/s1600/All+SQL+B.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-x5DqTBobgb0/UwJtcJJck4I/AAAAAAAAAk8/I2-riuk_itU/s1600/All+SQL+B.bmp" height="150" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Figura 2</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-hnUcBkLA9jY/UwJtda5UVpI/AAAAAAAAAlI/LC7ZNiteIGI/s1600/All+SQL+C.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-hnUcBkLA9jY/UwJtda5UVpI/AAAAAAAAAlI/LC7ZNiteIGI/s1600/All+SQL+C.bmp" height="368" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Figura 3</div>
<br />
Seleccionando un valor de <strong><em>0 (cero)</em></strong>, podemos ver la opción de Edit All Rows (Editar todas las filas) en el menú contextual (Figura 4).<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-Mf9OQf2YQQI/UwJtdUi1VwI/AAAAAAAAAlQ/3wjlebSCPaY/s1600/All+SQL+D.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-Mf9OQf2YQQI/UwJtdUi1VwI/AAAAAAAAAlQ/3wjlebSCPaY/s1600/All+SQL+D.bmp" height="302" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Figura 4</div>
<br />
<br />Esteban De Leohttp://www.blogger.com/profile/12585324840724778393noreply@blogger.com4tag:blogger.com,1999:blog-5643370365584405561.post-91599956655950021392014-01-28T11:00:00.000-03:002014-05-07T17:07:14.696-03:00Get-Mailbox muesta información erronea en ServerName<div style="text-align: justify;">
Contar la cantidad de mailboxes que hay dentro de un MailboxServer puede resultar más complejo de lo que parece. </div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
Si utilizamos el cmdlet:</div>
<div style="text-align: justify;">
<strong><em></em></strong> </div>
<div style="text-align: left;">
<strong><em>Get-Mailbox -Server <servername> -ResultSize Unlimited | Measure-Count </servername></em></strong></div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
obtendremos la cantidad de casillas (Figura 1)</div>
<div style="text-align: justify;">
</div>
<div class="separator" style="clear: both; text-align: left;">
<a href="http://4.bp.blogspot.com/-IKhY2Sq9Lvw/UuMyArBF7TI/AAAAAAAAAkA/fn9fmilmSZk/s1600/ServerName-A.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-IKhY2Sq9Lvw/UuMyArBF7TI/AAAAAAAAAkA/fn9fmilmSZk/s1600/ServerName-A.bmp" height="168" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Figura 1</div>
<br />
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
Pero si utilizamos el cmdlet:</div>
<div style="text-align: justify;">
</div>
<div style="text-align: left;">
<strong><em>Get-MailboxDatabase </em></strong><strong><em>-Server <servername></servername></em></strong><strong><em> | Get-Mailbox -ResultSize Unlimited | Measure-Count </em></strong></div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
obtendremos un número diferente de casillas (Figura 2)</div>
<div style="text-align: justify;">
</div>
<div class="separator" style="clear: both; text-align: left;">
<a href="http://1.bp.blogspot.com/-yoTzW1WzFDA/UuMx_xjndnI/AAAAAAAAAj4/vsuJ_W6NNyU/s1600/ServerName-B.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-yoTzW1WzFDA/UuMx_xjndnI/AAAAAAAAAj4/vsuJ_W6NNyU/s1600/ServerName-B.bmp" height="121" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Figura 2</div>
<div align="justify" class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: justify;">
</div>
<div class="separator" style="clear: both; text-align: justify;">
Esto se debe a que Exchange Server 2010 no actualiza el atributo <em>msExchHomeServerName</em> cuando se mueve un usuario a otro servidor. Por eso cuando consultamos por un usuario, el nombre del servidor puede estar desactualizado (Figura 3).</div>
<div class="separator" style="clear: both; text-align: justify;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-PBGlJEF_vjE/UuMzKU-sO_I/AAAAAAAAAkI/u8cr-p1UcQU/s1600/Script+Demo+-+A.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-PBGlJEF_vjE/UuMzKU-sO_I/AAAAAAAAAkI/u8cr-p1UcQU/s1600/Script+Demo+-+A.bmp" height="84" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Figura 3</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: justify;">
En este caso, el server MIRSWMBX100 no existe dentro de la organización de Exchange Server, pues éste fue removido y los usuarios pasaron al servidor MIRSWMBX105. </div>
<div class="separator" style="clear: both; text-align: justify;">
</div>
<div class="separator" style="clear: both; text-align: justify;">
Para actualizar múltiples usuarios podemos usar el script Clear-ServerName.ps1, que acepta dos parámetros: </div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<strong>-OldServer</strong>: Para indicar el servidor que ya no existe más y queremos actualizar<br />
<div class="separator" style="clear: both; text-align: justify;">
<strong>-ListOnly</strong>: Para indicar que solo queremos listar los usuarios con un server erróneo, pero no actualizarlos (Comportamiento predeterminado)</div>
<div class="separator" style="clear: both; text-align: justify;">
</div>
<div class="separator" style="clear: both; text-align: justify;">
Para listar los usuarios que tienen el parámetro ServerName incorrecto, podemos buscar el nombre del server y -ListOnly en $True (Figura 4).</div>
<div class="separator" style="clear: both; text-align: justify;">
</div>
<div class="separator" style="clear: both; text-align: justify;">
<strong>.\Clear-ServerName.ps1 -OldServer <servername> <em>ServerName</em> -ListOnly:$True</servername></strong> </div>
<div class="separator" style="clear: both; text-align: justify;">
</div>
<div class="separator" style="clear: both; text-align: justify;">
</div>
<div class="separator" style="clear: both; text-align: justify;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-mo-hn668Rls/UueuUEQGOVI/AAAAAAAAAkY/qJ7sVwd7VMA/s1600/Script+Demo+-+B.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-mo-hn668Rls/UueuUEQGOVI/AAAAAAAAAkY/qJ7sVwd7VMA/s1600/Script+Demo+-+B.bmp" height="82" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Figura 4</div>
<br />
Con el parámetro -ListOnly:$False, se actualiza la información en los Mailboxes de los usuarios (Figura 5).<br />
<br />
<strong>.\Clear-ServerName.ps1 -OldServer <servername><em>ServerName</em> -ListOnly:$false</servername></strong> <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-05GEISCXXls/UueuUFNORiI/AAAAAAAAAkc/TzyCccLnfq8/s1600/Script+Demo+-+C.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-05GEISCXXls/UueuUFNORiI/AAAAAAAAAkc/TzyCccLnfq8/s1600/Script+Demo+-+C.bmp" height="72" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Figura 5</div>
<br />
Podemos comprobarlo con un Get-Mailbox (Figura 6)<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-hNMtCIvSoQw/UueuUtCLYTI/AAAAAAAAAkk/ic9Mo6U145Y/s1600/Script+Demo+-+D.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-hNMtCIvSoQw/UueuUtCLYTI/AAAAAAAAAkk/ic9Mo6U145Y/s1600/Script+Demo+-+D.bmp" height="94" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Figura 6</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: justify;">
Para crear el script, hay que copiar el siguiente texto en un editor (por ejemplo Notepad.exe) y guardarlo con la extensión .ps1</div>
<div class="separator" style="clear: both; text-align: justify;">
</div>
<div class="separator" style="clear: both; text-align: justify;">
Param(</div>
[string]$OldServer,<br />
[switch]$ListOnly=$True<br />
)<br />
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
Set-ADServerSettings -ViewEntireForest 1<br />
Write-Host "Searching for Server" $OldServer<br />
If ($ListOnly -ne $False) {$ListOnly = $True}<br />
Write-Host "List Only" $ListOnly<br />
Write-Host<br />
<div class="separator" style="clear: both; text-align: justify;">
</div>
<div class="separator" style="clear: both; text-align: justify;">
$Mailboxes=$null</div>
[int]$a= (Get-Mailbox * -ResultSize Unlimited| where {$_.Servername -eq $OldServer} | Measure-Object).count<br />
<div class="separator" style="clear: both; text-align: justify;">
Write-host "Total Mailbox found:" $a</div>
<div class="separator" style="clear: both; text-align: justify;">
if ($a -eq 0) </div>
<div class="separator" style="clear: both; text-align: justify;">
{write-host "No Mailboxes found on server" $oldServer}</div>
<div class="separator" style="clear: both; text-align: justify;">
Else </div>
<div class="separator" style="clear: both; text-align: justify;">
{</div>
$Mailboxes = Get-Mailbox * -ResultSize Unlimited| where {$_.Servername -eq $OldServer}<br />
<br />
foreach ($Mailbox in $Mailboxes)<br />
{<br />
<div class="separator" style="clear: both; text-align: justify;">
$MBX = $null;</div>
$MBX = Get-Mailbox -Identity $Mailbox<br />
<div class="separator" style="clear: both; text-align: justify;">
If ($ListOnly -ne $True) </div>
<div class="separator" style="clear: both; text-align: justify;">
{</div>
write-Host "Updating" $Mbx;<br />
Set-Mailbox $MBX -Database $MBX.Database -Confirm:$false -Force<br />
}<br />
<div class="separator" style="clear: both; text-align: justify;">
else</div>
{$NewServer=(Get-MailboxDatabase $MBX.Database | Select Server);<br />
write-Host $MBX;<br />
write-Host $NewServer<br />
}<br />
<div class="separator" style="clear: both; text-align: justify;">
}</div>
}<br />
<div class="separator" style="clear: both; text-align: justify;">
</div>
<div class="separator" style="clear: both; text-align: justify;">
Gracias a <a href="http://www.yusufozturk.info/" target="_blank">Yusuf</a> por su <a href="http://www.yusufozturk.info/windows-powershell/how-to-fix-incorrect-msexchhomeservername-attribute-after-removing-an-exchange-mailbox.html" target="_blank">artículo</a> y los consejos para el script. </div>
<div class="separator" style="clear: both; text-align: justify;">
</div>
Esteban De Leohttp://www.blogger.com/profile/12585324840724778393noreply@blogger.com0tag:blogger.com,1999:blog-5643370365584405561.post-6743431834455545362013-12-17T11:00:00.000-03:002013-12-17T13:04:09.186-03:00¿ De que color es tu server ? - Lab Tip Nro 3<br />
¿Cómo saber si un server es una instalación full o un server core antes de iniciar sesión? ¡Muy simple! Podés ver el color de la pantalla.<br />
<br />
Si es un Windows Server 2012/R2 con instalación Server Core, la pantalla es azul (Figura 1). Si es un Windows Server 2012/R2 con instalación GUI (o MSI), la pantalla es gris (Figura 2).<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-5yx5bMcfVtw/UrBl0FHJaAI/AAAAAAAAAjk/vEbH30RkiwE/s1600/DCColors+Core.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="257" src="http://3.bp.blogspot.com/-5yx5bMcfVtw/UrBl0FHJaAI/AAAAAAAAAjk/vEbH30RkiwE/s400/DCColors+Core.bmp" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Figura 1</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-LdP3fmjeZxY/UrBl0Cbx-qI/AAAAAAAAAjg/hw0ftqdobmw/s1600/DCColors+Full+GUI+B.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="270" src="http://4.bp.blogspot.com/-LdP3fmjeZxY/UrBl0Cbx-qI/AAAAAAAAAjg/hw0ftqdobmw/s400/DCColors+Full+GUI+B.bmp" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Figura 2</div>
Esteban De Leohttp://www.blogger.com/profile/12585324840724778393noreply@blogger.com1