Búsqueda de sitios web

Migrar las unidades domésticas de los usuarios a OneDrive para empresas con PowerShell


Tenemos Office 365 desde hace casi 3 años y una de las cosas en mi lista de tareas pendientes era migrar las carpetas de inicio de los usuarios a OneDrive for Business. Lo intenté el año pasado y les pedí a todos que copiaran o movieran los archivos ellos mismos, pero no funcionó como estaba planeado.

Así que esta vez tuve que cambiar mis tácticas, claramente, los usuarios (más de 150) no iban a mover los archivos por sí mismos. Ahora sé que OneDrive tiene la capacidad de mover las carpetas conocidas (Escritorio, Documentos e Imágenes), pero esos no son los archivos personales que están almacenados en el servidor de archivos. Entonces, para mover los archivos usaremos PowerShell.

El almacenamiento en el servidor es caro, por lo que es una pérdida de dinero comprar almacenamiento para las carpetas de inicio cuando cada usuario tiene almacenamiento ilimitado en la nube. Otra ventaja para los usuarios es que, por supuesto, pueden acceder a sus archivos desde cualquier ubicación.

Preparando el movimiento de la carpeta de inicio

Antes de que podamos mover los archivos, necesitamos preparar algunas cosas. Hay algunas configuraciones de GPO que podemos configurar, revise la configuración de administración de OneDrive, debemos informar a nuestros usuarios y debemos implementar el script.

Otro problema potencial son los nombres de archivos no válidos o las rutas largas. Al igual que SharePoint tiene OneDrive for Business, algunas limitaciones de archivos:

  • Nombres de archivos o carpetas no válidos
  • Caracteres no válidos ( ” * : < > ?/\ |)
  • Tamaño máximo de archivo de 15 Gb
  • Límite de ruta de 400 caracteres

Lea la lista completa de limitaciones aquí.

Comprobando el Centro de administración de OneDrive para empresas

Siempre es bueno consultar el Centro de administración de Office 365 antes de que se acaben este tipo de migraciones. Se agregan nuevas configuraciones periódicamente y es posible que desee limitar, por ejemplo, las opciones para compartir en OneDrive para la Empresa.

Asegúrese de que la configuración esté en línea con las políticas de seguridad de su empresa.

Mover carpetas conocidas de OneDrive para empresas

Mover las carpetas conocidas (Escritorio, Documentos e Imágenes) a OneDrive es algo que realmente deberías habilitar. Solo requiere dos configuraciones de GPO para configurarlo y se implementará solo. Sus usuarios pueden trabajar y almacenar los archivos como solían hacerlo, pero tienen una copia de seguridad segura en la nube.

Cuando pasamos de un entorno Citrix completo a uno independiente, una de mis preocupaciones era mantener seguros los datos del usuario. Por supuesto, almacenan los archivos relacionados con el trabajo en los controladores de red y ahora en SharePoint. Pero todos sabemos que a los usuarios les gusta mantener los archivos relacionados con el trabajo en su escritorio o pueden guardarlos sin saberlo en su carpeta de documentos.

Y sí, necesitamos educar a nuestros usuarios, pero al configurar carpetas conocidas, tenemos un problema menos del que preocuparnos.

Obtenga su ID de inquilino de Office 365

Antes de que podamos configurar los GPO, necesitamos obtener nuestra ID de inquilino. Con PowerShell podemos conseguirlo con un solo comando:

# Connect to the Azure AD
connect-azuread

# result:
Account                Environment Tenant
-------                ----------- ------
johndoe@lazyadmin.nl   AzureCloud  <your tenant ID>

# Optional - Get your tenant details
get-azureadtenantdetail

Después de conectarse correctamente a Azure AD, obtendrá el ID del inquilino en los resultados. Si no lo obtiene, siempre puede usar el cmdlet Get-AzureAdTenantDetail donde el ID de objeto es su ID de inquilino.

Configurar los GPO

Hay un par de GPO que debemos configurar. Tenga en cuenta que si habilita este GPO para toda su organización a la vez, tendrá un gran pico de tráfico de red debido a la sincronización de OneDrive. Por lo tanto, es posible que desee utilizar un grupo de seguridad temporal para apuntar al GPO.

Cree un nuevo GPO y navegue hasta las siguientes políticas:

Computer configuration\Policies\Administrative Templates\OneDrive


Si no puede encontrar las políticas de grupo de OneDrive, es posible que primero deba copiar los archivos adml y admx:

  1. Copie el archivo .adml y .admx de %localappdata%\Microsoft\OneDrive\BuildNumber\adm\ en una estación de trabajo
  2. Pegue el .admx en el almacén central del controlador de dominio: \\domain\sysvol\domain\Policies\PolicyDefinitions
  3. Pegue el .adml en la carpeta del idioma correcto en el almacén central


Si aún no lo ha hecho, primero habilite la políticaConfigurar OneDrive de forma silenciosa usando la cuenta principal de Windows. Esto le ahorrará al usuario un inicio de sesión adicional cuando configure OneDrive por primera vez.

Además, asegúrese de limitar el ancho de banda de carga, de esta manera un usuario no puede ralentizar toda la conexión a Internet. Establezca la política Establezca el porcentaje máximo de ancho de banda de carga que utiliza OneDrive.exe en algo así como 70.

Para mover la carpeta conocida, habilite la política Redirija silenciosamente la carpeta conocida de Windows a OneDrive e ingrese el ID del inquilino. Puede habilitar una notificación de usuario si lo desea.

También se recomienda habilitar la política Solicitar al usuario que mueva la carpeta conocida de Windows a OneDrive para admitir cualquier cliente OneDrive heredado.

Mover la carpeta de inicio de los usuarios

El último paso, y esto es lo que planeamos hacer, es mover los datos de la carpeta de inicio del usuario a su cuenta de OneDrive para la Empresa. En mi caso son los archivos almacenados en los servidores de archivos. Entonces cada usuario tiene una unidad de red asignada a su carpeta.

Algunas cosas que debemos abordar en nuestro script de PowerShell es encontrar la carpeta OneDrive del usuario, verificar si está conectada y dejar una indicación en la carpeta de inicio para que sepamos que está copiada. No vamos a mover los archivos, solo copiarlos. Planeo mover los archivos a nuestro servidor de archivo más adelante para que siempre tengamos una copia de seguridad.

PowerShell y OneDrive

Para verificar si OneDrive está conectado, necesitamos importar un archivo DLL para leer el estado de OneDrive. Descargue OneDriveLib.dll desde este repositorio de GitHub. Colóquelo en una ubicación a la que todos los usuarios puedan acceder. Recomiendo netlogon, pero cualquier otro recurso compartido de red también puede funcionar.

Primero, importamos el archivo DLL:

Import-Module \\contoso.local\netlogon\OnedriveLib.dll

A continuación, necesitamos obtener la ruta a la carpeta OneDrive del usuario. La ubicación predeterminada para esta carpeta es la carpeta del perfil de los usuarios. Si tiene varias carpetas de OneDrive, puede usar la variable USERPROFILE; de lo contrario, recomendaría usar la variable OneDriveCommercial.

#Find OneDrive folder
$path = $env:OneDriveCommercial

# Alternative:
# $path = $env:USERPROFILE + '\OneDrive - LazyAdmin'

Para comprobar si tenemos la carpeta correcta y que OneDrive está conectado podemos obtener el estado de OneDrive:

#Get OneDrive status
$ODStatus = Get-ODStatus -ByPath $path

# or in short:
$ODStatus = Get-ODStatus -ByPath $env:OneDriveCommercial

Si está conectado, devolverá "UpToDate" o "Sincronización". Entonces verificamos el resultado y usamos robocopy para copiar los archivos.

if ($ODStatus -eq 'UpToDate' -or $ODStatus -eq 'Syncing') {
    #OneDrive is connected
    write-host 'OneDrive connected and found'
    robocopy $env:HOMESHARE $env:OneDriveCommercial /E /SEC
    new-item $env:HOMESHARE -name '_FILES COPIED TO ONEDRIVE.txt' -ItemType 'file' -Value 'Files Copied'
}

Como puede ver en la última línea, creamos un nuevo elemento, un archivo de texto. Más adelante ejecutamos un script de PowerShell para verificar si migramos todas las carpetas de la unidad principal antes de archivarlas.

Conclusión

Ejecute PowerShell en el modo contextual del usuario que inició sesión; puede usar PDQ Deploy para esto, un GPO (script de inicio de sesión) o SCCM. Si tiene muchos usuarios, asegúrese de distribuir la implementación para limitar el impacto en su red.

Con PowerShell asegúrese de verificar las variables de entorno disponibles. En mi primer intento de crear este script, intenté usar la letra de unidad de la carpeta de inicio del usuario. Eso no funcionó. Mientras buscaba una alternativa, noté que podemos usar $env:HomeDrive que devolverá la letra de la unidad o $env:HomeShare que devuelve la ruta real.

Artículos relacionados