Establecer la ubicación predeterminada de la carpeta OneDrive a través de directivas de grupo

Hace unos días, como parte de mi trabajo, estaba apoyando un compañero en un proyecto de ingeniería de imágenes en Windows 10 y nos encontramos con que uno de los requerimientos que tenía el cliente sobre la imagen era cambiar la ubicación predeterminada de la carpeta OneDrive a otra partición de forma predeterminada, así el usuario que iniciara sesión solo tendría que indicar la cuenta y no hacer el cambio manualmente.

Predeterminadamente no se puede hacer el cambio hasta después de configurada la cuenta, además de que aplica por usuario; así que nos dimos en la tarea de buscar y encontramos un artículo técnico de la base de conocimientos de Office donde describía una serie de directivas de grupo asociadas a unos archivos ADMX disponibles para descargar:
https://support.office.com/en-us/article/Use-Group-Policy-to-control-OneDrive-sync-client-settings-0ecb2cf5-8882-42b3-a6e9-be6bda30899c

Lamentablemente me encontré con que para para algunas personalizaciones como la que yo buscaba, establecer la ubicación predeterminada de la carpeta OneDrive, había que hacer personalizaciones manuales sobre los archivos, pero la plantilla que uno descarga no tiene ni siquiera el XML con todos los valores base que requiere para funcionar y la ayuda está pésimamente documentada.

Con el ánimo de dejar algo de documentación para futuras ocasiones en que lo necesite y para el que le pueda servir, escribiré a continuación cómo deben de quedar configurados los archivos para que la directiva se pueda aplicar correctamente.

Requerimientos

1. Debemos saber cuál es el Tenant ID de nuestro Azure AD. Si necesitan saber cómo encontrar el Tenant ID, pueden ver este artículo

2. Aunque podemos hacer las modificaciones con el Bloc de notas, yo les recomiendo utilizar un editor como Notepad++ para los siguientes pasos. Pueden descargarlo desde aquí:
https://notepad-plus-plus.org/

Descarga de archivos

Aunque hay dos partes desde la web oficial que se pueden descargar, la mejor es la que está en la misma KB que compartí arriba: download the OneDrive Deployment Package

Configuración del ADMX y ADML

Una vez descarguemos el paquete de implementación, debemos descomprimir el contenido para poder empezar a modificar los dos archivos importantes, OneDrive.admx y OneDrive.adml:

image

Procedemos a hacer clic derecho sobre el archivo OneDrive.admx y lo editamos con Notepad++

image

Lo primero que debemos hacer es ubicarnos en las directivas DefaultRootDir y DisableCustomRoot para remplazar nuestro tenant ID por la cadena que veremos en el XML, así: {INSERT YOUR TENANT’S GUID HERE}

image

image

Naturalmente todos tendremos un identificador diferente.

Es importante aclarar que debemos tener cuidado de no incluir comillas adicionales ni corchetes, por ejemplo:

image

La directiva que nos va a permitir modificar la ubicación predeterminada de la carpeta de OneDrive es la que está con el nombre de DefaultRootDir, así que debemos hacerle algunas correcciones sobre lo que trae predeterminadamente la plantilla para que funcione.

Después de la etiqueta de supportedOn y antes de elements, vamos a agregar esto:

<enabledValue>
     <string>D:\ODUsers\%UserName%</string>
</enabledValue>
<disabledValue>
     <string></string>
</disabledValue>

Lo anterior es para que la plantilla aplique el cambio en el registro y aparezca como Enabled en la consola de directivas de grupo.

Noten que en la etiqueta de string yo agregué una ruta predeterminada; esto es de vital importancia para que pueda funcionar. La ruta puede ser cualquiera, pero debemos asegurarnos de que sea la misma tanto en este archivo .admx como en el .adml más adelante.

Todo quedaría así:


<policy name=»DefaultRootDir» class=»User» displayName=»$(string.DefaultRootDir)» explainText=»$(string.DefaultRootDir_help)» presentation=»$(presentation.DefaultRootDir_Pres)» key=»SOFTWARE\Microsoft\OneDrive\Tenants\81e570c6-569e-4b33-8ef5-8574e89d545b» valueName=»DefaultRootDir»>
       <parentCategory ref=»OneDriveNGSC» />
       <supportedOn ref=»windows:SUPPORTED_Windows7″ />
     <enabledValue>
        <string>D:\ODUsers\%UserName%</string>
     </enabledValue>
     <disabledValue>
         <string></string>
     </disabledValue>
       <elements>
         <text id=»OneDriveSyncFolder» valueName=»DefaultRootDir» required= «true» expandable=»true» />
       </elements>
     </policy>


image

Guardamos los cambios desde nuestro editor y cerramos el OneDrive.admx.

Hacemos clic derecho sobre el archivo OneDrive.adml y procedemos a editarlo también.

image

Al principio del archivo, debajo de  <stringTable>, vamos a agregar lo siguiente:

<!– OneDrive Sync Folder –>
<string id=»OneDriveSyncFolder»>OneDrive Sync Folder</string>

Nos quedaría así:


<resources>
     <stringTable>
    
       <!– OneDrive Sync Folder –>
       <string id=»OneDriveSyncFolder»>OneDrive Sync Folder</string>


image

Después de esta modificación, bajamos del todo en el archivo hasta la etiqueta llamada <presentationTable>; allí ubicamos la etiqueta de <defaultValue> y cambiamos su contenido por la ruta que deseamos mostrar predeterminadamente al abrir la plantilla en el Administrador de directivas de grupo. En mi caso, pondré la ubicación a:

D:\ODUsers\%UserName%


<presentationTable>
    <presentation id=»AutomaticUploadBandwidthPercentage_Pres»>
    <text>Select the maximum amount of bandwidth to take up when uploading files.</text>
         <text>Valid values are from 10 – 90.</text>
         <decimalTextBox refId=»BandwidthSpinBox» defaultValue=»70″ spinStep=»1″>Bandwidth:</decimalTextBox>
       </presentation>
       <presentation id=»DefaultRootDir_Pres»>
        <textBox refId=»OneDriveSyncFolder»>
         <label>OneDrive Sync Folder</label>
        <defaultValue>D:\ODUsers\%UserName%</defaultValue>
       </textBox>
      </presentation>
   </presentationTable>


image

Guardamos el archivo desde el editor y cerramos.

Importar los archivos al repositorio central del Directorio activo

En este punto voy a asumir que ya tienen creado un repositorio central en el controlador de dominio; si no es así, los invito a seguir este artículo para crearlo:

https://support.microsoft.com/en-us/help/3087759/how-to-create-and-manage-the-central-store-for-group-policy-administra

Para registrar los archivos correctamente, seguimos estos pasos:

1. Cerramos cualquier instancia del Administrador de directivas de grupo que tengamos abierta

2. Copiamos el archivo OneDrive.admx a la carpeta raíz de PolicyDefinitios del repositorio central:

image

3. Copiamos el archivo OneDrive.adml en la subcarpeta en-US de PolicyDefinitios:

image

Crear la directiva de grupo

Por último, procedemos a abrir el Administrador de directivas de grupo, creamos o editamos la plantilla desde donde queremos configurar la carpeta de OneDrive y navegamos hasta:

User Configuration\Policies\Administrative Templates\OneDrive

Doble clic sobre la plantilla Set the default location for the OneDrive folder

image

En la ventana de la plantilla, seleccionamos Enabled y, si es necesario, modificamos la ruta en la que OneDrive hará la sincronización, debajo de OneDrive Sync Folder:

image

Como nosotros modificamos la ruta en el archivo OneDrive.admx y OneDrive.adml, será la que aparezca predeterminadamente. Si necesitamos que sea otra, basta con cambiarla y ya.

Hacemos clic en el botón OK para habilitar la directiva. Debemos asegurarnos de que en la ventana del Administrador de directivas se quede viendo como Enabled:

image

Probar la directiva de grupo

Iniciamos en un equipo que tenga Windows 7 o Windows 10 y el último cliente de OneDrive instalado con un usuario de dominio que le aplique la directiva, ejecutamos OneDrive y procedemos a realizar la configuración:

1. Iniciar sesión con la cuenta:

image

2. Ingreso de contraseña:

image

3. Confirmación de la carpeta predeterminada:

image

Noten que, predeterminadamente, la carpeta de OneDrive está apuntando a la misma ubicación que definimos en la directiva de grupo.

4. Sincronización de archivos:

image

5. Confirmación:

image

6. Por último, confirmamos que la carpeta se haya creado físicamente en la ruta que indicamos en la directiva de grupo:

image

Espero les sea de utilidad.

Saludos,

<

p align=»justify»>Checho

Personalizar la barra de tareas de Windows 10 con directivas de grupo

El pasado mes de mayo escribí un artículo sobre una característica bastante llamativa en Windows 10, versión 1511, que, expandiendo lo que ya se podía en Windows 8.1 Update, permitía crear un diseño parcial del menú de inicio para todos los usuarios, utilizando Directivas de grupo.

Windows 10, versión 1607, agregó otra funcionalidad más a estas características para anclar una serie de accesos predeterminados en la barra a través de Directivas de grupo y así ayudar a los administradores de infraestructura a estandarizar fácilmente las personalizaciones de usuario. En este artículo explicaré cómo podemos realizar estas personalizaciones.

Requerimientos

1. Controladores de dominio con los ADMX actualizados a Windows 10, versión 1607

2. Equipo con Windows 10, versión 1607, que sirva de referencia

3. Equipos con Windows 10 Enterprise o Education, versión 1607, en donde se implemente la directiva de grupo

Nota: esta característica no está disponible en ediciones Home y Pro.

Paso 1: configurar la barra de tareas

Estos pasos se deben realizar en el equipo de referencia, que puede estar o no unido al dominio de la empresa. Lo más importante es que si vamos a referenciar aplicaciones no integradas en Windows, estas deben instalarse también en los equipos en donde se va a desplegar la directiva.

Lo primero que hay que hacer, después de instalar las aplicaciones, si es que se requiere agregar un acceso directo, es anclar todos los accesos directos que vamos a predeterminar en los demás equipos. Basta con buscar la aplicación en el menú de inicio, hacer clic derecho y luego clic izquierdo en Anclar a la barra de tareas.

image

Para este artículo, yo anclé el Internet Explorer, Notepad++, Conexión a acceso remoto y el Símbolo del sistema.

image

Paso 2: crear y guardar el XML

El siguiente paso es crear o personalizar el XML. Microsoft provee una muestra en su documentación, así solo debemos dedicarnos a encontrar el Desktop Application Link Path adecuado para cada aplicación anclada; se utilizan dos rutas:

  • %APPDATA%\Microsoft\Windows\Start Menu\Programs
  • %ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs

Nota: las aplicaciones de interfaz moderna también se pueden anclar y relacionar en el XML que se crea, pero no las mostraré en el ejemplo, puesto que casi no se ve en la vida real; de hecho, las empresas tienden a bloquear estas aplicaciones.

Los accesos directos pueden estar en una u otra, por lo que toca buscarlo manualmente carpeta por carpeta. Por ejemplo, el acceso al Notepad++ está en:

%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Notepad++\Notepad++.lnk

image

El Internet Explorer, por poner otro ejemplo, está en la ruta:

%APPDATA%\Microsoft\Windows\Start Menu\Programs\Accessories\Internet Explorer.lnk

image

Ambas rutan deben estar dentro de la etiqueta <taskbar:DesktopApp DesktopApplicationLinkPath=/> del XML, así:


<?xml version=»1.0″ encoding=»utf-8″?>
<LayoutModificationTemplate
    xmlns=»
http://schemas.microsoft.com/Start/2014/LayoutModification»
    xmlns:defaultlayout=»http://schemas.microsoft.com/Start/2014/FullDefaultLayout»
    xmlns:start=»http://schemas.microsoft.com/Start/2014/StartLayout»
    xmlns:taskbar=»http://schemas.microsoft.com/Start/2014/TaskbarLayout»
    Version=»1″>
  <CustomTaskbarLayoutCollection>
    <defaultlayout:TaskbarLayout>
      <taskbar:TaskbarPinList>
        <taskbar:DesktopApp DesktopApplicationLinkPath=»%APPDATA%\Microsoft\Windows\Start Menu\Programs\Accessories\Internet Explorer.lnk»/>
        <taskbar:DesktopApp DesktopApplicationLinkPath=»%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Notepad++\Notepad++.lnk»/>
        <taskbar:DesktopApp DesktopApplicationLinkPath=»%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Accessories\Remote Desktop Connection.lnk»/>
        <taskbar:DesktopApp DesktopApplicationLinkPath=»%APPDATA%\Microsoft\Windows\Start Menu\Programs\System Tools\Command Prompt.lnk»/>
       
      </taskbar:TaskbarPinList>
    </defaultlayout:TaskbarLayout>
</CustomTaskbarLayoutCollection>
</LayoutModificationTemplate>


image

Nota: la base de este XML está tomada de la documentación de Microsoft.

Después de agregar las entradas correspondientes a cada acceso directo anclado, debemos guardar el XML con cualquier nombre descriptivo y ubicaro en una ruta de red, en la que pueda acceder el controlador de dominio que creará la directiva. Para este caso, yo la ubiqué en \\DC\Resources y lo llamé TaskBarLayout1.xml.

image

Paso 3: crear y desplegar la directiva

En el controlador de dominio, después de actualizar los ADMX, creamos o editamos la GPO destinada para personalizar la barra de tareas en los equipos con Windows 10, versión 1607, y realizamos lo siguiente:

1. User Configuration > Policies > Administrative Templates > Start Menu and Taskbar

2. Doble clic en la plantilla de Start Layout

image

3. Habilitamos la directiva y escribimos debajo de Start Layout File la ruta del XML

image

4. Clic en Apply y OK para terminar

Paso 4: probar la directiva de grupo

Si todo sale bien, cuando unamos un nuevo equipo al dominio o simplemente  reiniciemos para forzar directivas de grupo, la barra de tareas debe aparecer con todos los nuevos accesos a la derecha.

Así está la barra de tareas sin aplicar la directiva:

image

Así se ve después de aplicada:

image

Parece increíble que una característica así se haya tardado tanto en llegar, ¿no creen?

Espero sea de utilidad.

Saludos,

—Checho

Establecer un diseño parcial del menú de inicio en Windows 10 a través de Directivas de grupo

Hace ya algunos años, en los tiempos de Windows 8.1, escribí una entrada en donde mostré una de las nuevas características que tenía el sistema operativo: diseño del menú de inicio, que se utilizaba para establecer una pantalla de inicio corporativa, con grupos e iconos obligatorios y que no se podían modificar por parte del usuario.  Windows 10, a partir de la versión 1511, continuó con esta funcionalidad, pero ahora es posible configurar dos tipos de diseño: completo y parcial.

A continuación pasaré a describir un poco la diferencia y explicar, paso a paso, cómo se puede implementar en una organización.

Diseño completo y parcial en Windows 10

El diseño completo del Menú de inicio es exactamente igual al que tenía Windows 10; es decir, desde otro equipo con la misma arquitectura (32 o 64 bits) se exporta el XML utilizando PowerShell y se aplica a través de una GPO, impidiendo que los usuarios, una vez se les aplique la directiva, puedan realizar modificaciones sobre los grupos o iconos anclados. El diseño parcial del Menú de inicio, nuevo en Windows 10 1511, permite crear grupos obligatorios, mas deja que el usuario modifique como quiera el resto del menú de inicio agregando nuevos grupos, por ejemplo.

Requerimientos

1. Entorno de dominio con los ADMX actualizados para Windows  10.

2. Dos equipos con Windows 10, versión 1511, y que al menos uno esté unido al dominio.

3. Ruta compartida disponible para trabajar con el XML.

Generar el archivo XML con el diseño del Menú de inicio

En el primer equipo, debemos personalizar manualmente los grupos que deseemos establecer como obligatorios para los usuarios; por ejemplo, yo creé un grupo de «Trabajo» y otro de «Soporte» en donde anclé todas las aplicaciones necesarias, además cambié los tamaños acorde a como quería.

image

Una vez personalizado el Menú de inicio, ejecutamos PowerShell con privilegios elevados.

image

El cmdlet que se debe utilizar es Export-StartLayout, que se encarga de exportar la descripción del menú de inicio actual en formato .xml. La sintaxis es muy fácil:

Export-StartLayout –Path <ruta><nombre.>.xml

Por ejemplo, para guardar el XML en el disco local y llamar al archivo «Inicio.xml», se ejecutaría:

Export-StartLayout –Path C:\Inicio.xml

image

Copiamos el archivo .xml al servidor en donde vamos a aplicar la directiva de grupo. Una vez copiado, editamos el archivo y agregamos la siguiente línea en el elemento <DefaultLayoutOverride>:

LayoutCustomizationRestrictionType=»OnlySpecifiedGroups»

Debería verse así:

image

 <DefaultLayoutOverride LayoutCustomizationRestrictionType=»OnlySpecifiedGroups»>

Guardamos el archivo en el directorio compartido creado en los requerimientos.

image

Implementar directiva de grupo

En el controlador de dominio, abrimos la GPO destinada para esta directiva y navegamos hasta:

User Configuration\Policies\Administrative Templates\Start Menu and Taskbar

Doble clic sobre la plantilla «Start Layout».

image

En la plantilla de «Start Layout», seleccionamos Enabled  y luego, debajo de Start Layout File, digitamos la ruta completa de red al archivo .xml:

image

Clic en OK al terminar para aplicar la directiva.

Probar la configuración del Menú de inicio

Para que el diseño parcial del Menú de inicio surta efecto es necesario reiniciar la máquina. Una vez hecho esto, debemos ver el Menú tal cual como se configuró en la primera máquina:

image

Noten los iconos que tienen los dos grupos obligatorios que establecí, creados para indicarle al usuario que no se pueden modificar de ninguna manera.

El otro aspecto importante es que, al ser un diseño parcial, se pueden crear otros grupos a gusto del usuario y que no interfieren para nada con los obligatorios:

image

Estos grupos personalizables no tienen el icono del candado para indicarle al usuario que tiene completa libertad.

Espero sea de utilidad.

Saludos,

—Checho