Ver demo×
×

¡Vean a NinjaOne en acción!

Cómo utilizar PowerShell para automatizar las instalaciones de Office 365

automatizar las instalaciones

En el vertiginoso y exigente mundo de las TI, cualquier herramienta que ahorre tiempo y simplifique las tareas vale su peso en oro. Hoy vamos a explorar cómo se pueden utilizar los scripts de PowerShell para automatizar las instalaciones de Office 365, una operación crítica que puede ahorrarte incontables horas a largo plazo. De hecho, con un script bien escrito, puedes gestionar instalaciones en toda una red desde tu escritorio. Este post está dirigido a profesionales de TI y proveedores de servicios gestionados (MSP) que deseen agilizar sus implantaciones de Office 365 utilizando la potencia de PowerShell.

¿Por qué automatizar las instalaciones de Office 365 con PowerShell?

PowerShell es un lenguaje avanzado de scripting y shell desarrollado por Microsoft. Forma parte integral del ecosistema de Windows desde Windows 7, y su potencia y flexibilidad lo han convertido en una herramienta vital para muchos profesionales de TI y MSP. Automatizar las instalaciones de Office 365 mediante PowerShell puede reducir drásticamente el tiempo y el esfuerzo necesarios para implementar Office 365 en varios equipos. 

Además, los scripts PowerShell pueden personalizarse para que se adapten a tus necesidades. Por ejemplo, el script se puede configurar para instalar componentes específicos de Office 365, aplicar determinadas configuraciones e incluso limpiar después de la instalación. Este nivel de personalización permite a los profesionales de TI y a los MSP garantizar que Office 365 se implementa de forma coherente en todos los equipos, en consonancia con las políticas y estándares de TI de la empresa. 

Profundicemos: el script PowerShell para automatizar las instalaciones de Office 365

Echemos un vistazo más de cerca a un script PowerShell de ejemplo para automatizar las instalaciones de Office 365. Este script está diseñado para instalar Office 365 utilizando un archivo de configuración personalizado o uno predeterminado. En caso de que falle la instalación, el script da un mensaje de error, lo que facilita la resolución de problemas.

Lo que hace que este script sea especialmente útil es su capacidad para descargar y utilizar la Herramienta de implantación de Office desde los servidores de Microsoft. Esta función garantiza que siempre se utilice la última versión de Office 365 para la instalación. Además, el script comprueba si el paquete Office 365 se ha instalado correctamente, lo que supone una garantía adicional.

Tras una instalación correcta, el script activa un reinicio del sistema. Esto es especialmente útil, ya que algunos componentes de Office 365 requieren un reinicio del sistema para funcionar correctamente. El script también está equipado con un mecanismo de limpieza que puede activarse para eliminar los archivos de instalación una vez instalado Office 365.

Script PowerShell de instalación de Microsoft Office 365

#Requires -Version 5.1

<#
.SYNOPSIS
    Installs Office 365 from config file or use a generic config file and installs.
.DESCRIPTION
    Installs Office 365 from config file or use a generic config file and installs.
.EXAMPLE
    No parameters need if you want to use
    the default config file
    OR
    change the $OfficeXML variable to your XML config file's content.
.EXAMPLE
     -ConfigurationXMLFile C:\Scripts\Office365Install\Config.xml
    Install Office 365 and use a local config file.
    You can use https://config.office.com/ to help build the config file.
.OUTPUTS
    None
.NOTES
    This will reboot after a successful install.
    Minimum OS Architecture Supported: Windows 10, Windows Server 2016
    If you use the ConfigurationXMLFile parameter and push the file to the endpoint, you can use https://config.office.com/ to help build the config file.
    Release Notes:
    Initial Release
    (c) 2023 NinjaOne
    By using this script, you indicate your acceptance of the following legal terms as well as our Terms of Use at https://www.ninjaone.com/it/condizioni-utilizzo/
    Ownership Rights: NinjaOne owns and will continue to own all right, title, and interest in and to the script (including the copyright). NinjaOne is giving you a limited license to use the script in accordance with these legal terms. 
    Use Limitation: You may only use the script for your legitimate personal or internal business purposes, and you may not share the script with another party. 
    Republication Prohibition: Under no circumstances are you permitted to re-publish the script in any script library or website belonging to or under the control of any other software provider. 
    Warranty Disclaimer: The script is provided “as is” and “as available”, without warranty of any kind. NinjaOne makes no promise or guarantee that the script will be free from defects or that it will meet your specific needs or expectations. 
    Assumption of Risk: Your use of the script is at your own risk. You acknowledge that there are certain inherent risks in using the script, and you understand and assume each of those risks. 
    Waiver and Release: You will not hold NinjaOne responsible for any adverse or unintended consequences resulting from your use of the script, and you waive any legal or equitable rights or remedies you may have against NinjaOne relating to your use of the script. 
    EULA: If you are a NinjaOne customer, your use of the script is subject to the End User License Agreement applicable to you (EULA).
#>

[CmdletBinding()]
param(
    # Use a existing config file
    [String]
    $ConfigurationXMLFile,
    # Path where we will store our install files and our XML file
    [String]
    $OfficeInstallDownloadPath = 'C:\Scripts\Office365Install',
    # Clean up our install files
    [Switch]
    $CleanUpInstallFiles = $False
)

begin {
    function Set-XMLFile {
        # XML data that will be used for the download/install
        # Example config below generated from https://config.office.com/
        # To use your own config, just replace <Configuration> to </Configuration> with your xml config file content.
        # Notes:
        #  "@ can not have any character after it
        #  @" can not have any spaces or character before it.
        $OfficeXML = [XML]@"
<Configuration ID="76b3b530-54a8-44d8-9689-278ec2547592">
  <Info Description="Example O365 install" />
  <Add OfficeClientEdition="64" Channel="MonthlyEnterprise" MigrateArch="TRUE">
    <Product ID="O365BusinessRetail">
      <Language ID="MatchOS" />
      <Language ID="MatchPreviousMSI" />
      <ExcludeApp ID="Access" />
      <ExcludeApp ID="Groove" />
      <ExcludeApp ID="Lync" />
      <ExcludeApp ID="Publisher" />
    </Product>
  </Add>
  <Property Name="SharedComputerLicensing" Value="0" />
  <Property Name="FORCEAPPSHUTDOWN" Value="TRUE" />
  <Property Name="DeviceBasedLicensing" Value="0" />
  <Property Name="SCLCacheOverride" Value="0" />
  <Updates Enabled="TRUE" />
  <RemoveMSI />
  <AppSettings>
    <Setup Name="Company" Value="Ninja Example" />
    <User Key="software\microsoft\office\16.0\excel\options" Name="defaultformat" Value="51" Type="REG_DWORD" App="excel16" Id="L_SaveExcelfilesas" />
    <User Key="software\microsoft\office\16.0\powerpoint\options" Name="defaultformat" Value="27" Type="REG_DWORD" App="ppt16" Id="L_SavePowerPointfilesas" />
    <User Key="software\microsoft\office\16.0\word\options" Name="defaultformat" Value="" Type="REG_SZ" App="word16" Id="L_SaveWordfilesas" />
  </AppSettings>
  <Display Level="None" AcceptEULA="TRUE" />
  <Setting Id="SETUP_REBOOT" Value="Never" /> 
  <Setting Id="REBOOT" Value="ReallySuppress"/>
</Configuration>
"@
        #Save the XML file
        $OfficeXML.Save("$OfficeInstallDownloadPath\OfficeInstall.xml")
      
    }
    function Get-ODTURL {
    
        [String]$MSWebPage = Invoke-RestMethod 'https://www.microsoft.com/en-us/download/confirmation.aspx?id=49117'
    
        $MSWebPage | ForEach-Object {
            if ($_ -match 'url=(https://.*officedeploymenttool.*\.exe)') {
                $matches[1]
            }
        }
    
    }
    function Test-IsElevated {
        $id = [System.Security.Principal.WindowsIdentity]::GetCurrent()
        $p = New-Object System.Security.Principal.WindowsPrincipal($id)
        if ($p.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator))
        { Write-Output $true }
        else
        { Write-Output $false }
    }
}
process {
    $VerbosePreference = 'Continue'
    $ErrorActionPreference = 'Stop'

    if (-not (Test-IsElevated)) {
        Write-Error -Message "Access Denied. Please run with Administrator privileges."
        exit 1
    }

    $CurrentPrincipal = New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent())
    if (!($CurrentPrincipal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator))) {
        Write-Warning 'Script is not running as Administrator'
        Write-Warning 'Please rerun this script as Administrator.'
        exit 1
    }

    if (-Not(Test-Path $OfficeInstallDownloadPath )) {
        New-Item -Path $OfficeInstallDownloadPath -ItemType Directory | Out-Null
    }

    if (!($ConfigurationXMLFile)) {
        Set-XMLFile
    }
    else {
        if (!(Test-Path $ConfigurationXMLFile)) {
            Write-Warning 'The configuration XML file is not a valid file'
            Write-Warning 'Please check the path and try again'
            exit 1
        }
    }

    $ConfigurationXMLFile = "$OfficeInstallDownloadPath\OfficeInstall.xml"
    $ODTInstallLink = Get-ODTURL

    #Download the Office Deployment Tool
    Write-Verbose 'Downloading the Office Deployment Tool...'
    try {
        Invoke-WebRequest -Uri $ODTInstallLink -OutFile "$OfficeInstallDownloadPath\ODTSetup.exe"
    }
    catch {
        Write-Warning 'There was an error downloading the Office Deployment Tool.'
        Write-Warning 'Please verify the below link is valid:'
        Write-Warning $ODTInstallLink
        exit 1
    }

    #Run the Office Deployment Tool setup
    try {
        Write-Verbose 'Running the Office Deployment Tool...'
        Start-Process "$OfficeInstallDownloadPath\ODTSetup.exe" -ArgumentList "/quiet /extract:$OfficeInstallDownloadPath" -Wait
    }
    catch {
        Write-Warning 'Error running the Office Deployment Tool. The error is below:'
        Write-Warning $_
        exit 1
    }

    #Run the O365 install
    try {
        Write-Verbose 'Downloading and installing Microsoft 365'
        $Silent = Start-Process "$OfficeInstallDownloadPath\Setup.exe" -ArgumentList "/configure $ConfigurationXMLFile" -Wait -PassThru
    }
    Catch {
        Write-Warning 'Error running the Office install. The error is below:'
        Write-Warning $_
    }

    #Check if Office 365 suite was installed correctly.
    $RegLocations = @('HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall',
        'HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall'
    )

    $OfficeInstalled = $False
    foreach ($Key in (Get-ChildItem $RegLocations) ) {
        if ($Key.GetValue('DisplayName') -like '*Microsoft 365*') {
            $OfficeVersionInstalled = $Key.GetValue('DisplayName')
            $OfficeInstalled = $True
        }
    }

    if ($OfficeInstalled) {
        Write-Verbose "$($OfficeVersionInstalled) installed successfully!"
        shutdown.exe -r -t 60
    }
    else {
        Write-Warning 'Microsoft 365 was not detected after the install ran'
    }

    if ($CleanUpInstallFiles) {
        Remove-Item -Path $OfficeInstallDownloadPath -Force -Recurse
    }
}
end {}

 

Accede a más de 700 scripts en el Dojo de NinjaOne

Obtén acceso

Ejemplos de uso del script

Escenario 1: despliegue a gran escala

Supongamos que eres administrador de TI en una empresa que está a punto de incorporar a cien nuevos empleados. Instalar manualmente Office 365 en cada ordenador sería una tarea cuando menos intimidante. En su lugar, puedes utilizar este script de PowerShell para automatizar el proceso. Utilizando NinjaOne para ejecutar el script de forma remota en cada dispositivo, puedes estandarizar la instalación de Office 365 en toda la red. Este enfoque simplificado no sólo ahorra un tiempo valioso, sino que también garantiza la uniformidad, una característica esencial para gestionar eficazmente una gran infraestructura de TI.

Descubre cómo NinjaOne puede mejorar la eficiencia de tu infraestructura de TI.  

Enlace: https://www.ninjaone.com/es/eficiencia/

Escenario 2: personal remoto 

Con el auge del trabajo a distancia, muchas empresas tienen empleados que trabajan desde distintos lugares con sus propios dispositivos. Garantizar que cada trabajador remoto tenga una versión de Office 365 correctamente instalada y configurada enpuede ser todo un reto. Sin embargo, si distribuyes este script PowerShell a tu personal remoto, pueden realizar la instalación ellos mismos. El script garantiza que Office 365 se instale correctamente y se configure según los estándares de tu organización.

Escenario 3: gestión de clientes MSP

Como proveedor de servicios gestionados (MSP), es posible que gestiones las TI de varias pequeñas empresas, cada una con sus propias necesidades y configuraciones específicas. Con este script PowerShell, puedes crear varios archivos de configuración XML adaptados a las necesidades de cada cliente. Cuandollegueel momento de instalar o actualizar Office 365 para un cliente, basta con ejecutar el script con el archivo deconfiguración adecuado. Esto garantiza una configuración de Office personalizada y coherente para cada uno de tus clientes. 

Escenario 4: actualizaciones periódicas  

Microsoft actualiza Office 365 con regularidad, y mantener las instalaciones de tu organizaciónal díapuede ser una tarea que lleve mucho tiempo. Con este script, puedes programar actualizaciones automáticas para que se ejecuten en el momento adecuado, garantizando una interrupción mínima del flujo de trabajo de tu equipo. El script utiliza la herramienta de implementación de Office para descargar e instalar la última versión de Office, lo que garantiza que tu equipo siempre tenga acceso a las últimas funciones y actualizaciones de seguridad. 

En cada uno de estos escenarios, este script de PowerShell puede simplificar significativamente el proceso de instalación y administración de Office 365. Al automatizar estas tareas, puedes ahorrar tiempo, reducir el riesgo de errores y garantizar una experiencia de Office coherente y fiable para tus usuarios. 

Uso del script en tu flujo de trabajo

La integración de este script de PowerShell en tu flujo de trabajo puede simplificar el proceso de implementación de Office 365. En lugar de descargar y ejecutar manualmente la herramienta de implantación de Office en cada equipo, el script puede ejecutarse de forma remota desde una ubicación central, lo cual reduce las posibilidades de error humano y garantiza una configuración estándar en todas las instalaciones.

Además, al personalizar el archivo de configuración XML, puedes adaptar la instalación de Office 365 a las necesidades de tu organización. Esto incluye especificar la versión de Office, el canal de actualización e incluso los componentes individuales de Office que se van a instalar.

Reflexiones finales

La automatización es el mejor amigo de un profesional de TI, y PowerShell ofrece una potente forma de automatizar las instalaciones de Office 365. Este práctico script no sólo agiliza el proceso de despliegue, sino que también ofrece opciones de personalización y funciones de limpieza.

Al integrar este script en tu flujo de trabajo, puedes reducir significativamente el tiempo y el esfuerzo necesarios para gestionar las instalaciones de Office 365 en toda tu red. Así pues, aprovecha el poder de PowerShell y haz implantar Office sea un juego de niños.

NinjaOne puede simplificar tus operaciones mediante la automatización de tareas repetitivas y largas. Su interfaz de fácil manejo permite a los técnicos de todos los niveles aplicar fácilmente la automatización en los endpoints, incluidos scripts personalizados de una amplia biblioteca, lo que hace que la corrección sea sencilla e intuitiva. Como señaló Chris Hesler de Crossroads Church’s, «NinjaOne nos ha ayudado a reducir las horas de trabajo. Ahora somos capaces de aportar más automatización con la biblioteca de scripts y resolver los problemas recurrentes». Descubre el poder transformador de automatizar tus operaciones de TI con NinjaOne, una herramienta diseñada para ser flexible e intuitiva. 

Próximos pasos

La creación de un equipo de TI próspero y eficaz requiere contar con una solución centralizada que se convierta en tu principal herramienta de prestación de servicios. NinjaOne permite a los equipos de TI supervisar, gestionar, proteger y dar soporte a todos sus dispositivos, estén donde estén, sin necesidad de complejas infraestructuras locales.

Conoce más sobre NinjaOne Endpoint Management, participa en una visita guiada en directo o prueba la plataforma NinjaOne de forma totalmente gratuita.

También te puede gustar

¿Listo para convertirte en un Ninja informático?

Descubre cómo NinjaOne puede ayudarte a simplificar las operaciones de TI.

NinjaOne Terms & Conditions

By clicking the “I Accept” button below, you indicate your acceptance of the following legal terms as well as our Terms of Use:

  • Ownership Rights: NinjaOne owns and will continue to own all right, title, and interest in and to the script (including the copyright). NinjaOne is giving you a limited license to use the script in accordance with these legal terms.
  • Use Limitation: You may only use the script for your legitimate personal or internal business purposes, and you may not share the script with another party.
  • Republication Prohibition: Under no circumstances are you permitted to re-publish the script in any script library belonging to or under the control of any other software provider.
  • Warranty Disclaimer: The script is provided “as is” and “as available”, without warranty of any kind. NinjaOne makes no promise or guarantee that the script will be free from defects or that it will meet your specific needs or expectations.
  • Assumption of Risk: Your use of the script is at your own risk. You acknowledge that there are certain inherent risks in using the script, and you understand and assume each of those risks.
  • Waiver and Release: You will not hold NinjaOne responsible for any adverse or unintended consequences resulting from your use of the script, and you waive any legal or equitable rights or remedies you may have against NinjaOne relating to your use of the script.
  • EULA: If you are a NinjaOne customer, your use of the script is subject to the End User License Agreement applicable to you (EULA).