Demo ansehen×
×

Sehen Sie NinjaOne in Aktion!

Verwenden von PowerShell zum Automatisieren von Office 365-Installationen

automatizar las instalaciones

In der schnelllebigen und anspruchsvollen Welt der IT ist jedes Tool, das Zeit spart und Aufgaben vereinfacht, Gold wert. Heute werden wir untersuchen, wie PowerShell-Skripte zur Automatisierung der Installation von Office 365 verwendet werden können – ein wichtiger Vorgang, der Ihnen auf lange Sicht unzählige Stunden ersparen kann. Mit einem gut geschriebenen Skript können Sie sogar Installationen in einem ganzen Netzwerk von Ihrem Schreibtisch aus verwalten. Dieser Beitrag richtet sich an IT-Experten und Managed Service Provider (MSPs), die ihre Office 365-Bereitstellungen mithilfe der PowerShell optimieren möchten.

Warum mit PowerShell automatisieren?

PowerShell ist eine fortgeschrittene Skriptsprache und Shell, die von Microsoft entwickelt wurde. Es ist seit Windows 7 ein integraler Bestandteil des Windows-Ökosystems, und seine Leistungsfähigkeit und Flexibilität haben es zu einem unverzichtbaren Tool für viele IT-Profis und MSPs gemacht. Die Automatisierung von Office 365-Installationen mit PowerShell kann den Zeit- und Arbeitsaufwand für die Bereitstellung von Office 365 auf mehreren Computern drastisch reduzieren. 

Außerdem können PowerShell-Skripte an Ihre Bedürfnisse angepasst werden. Das Skript kann zum Beispiel so konfiguriert werden, dass es bestimmte Office 365-Komponenten installiert, bestimmte Einstellungen anwendet und sogar nach der Installation aufräumt. Dank dieser Anpassungsmöglichkeiten können IT-Experten und MSPs sicherstellen, dass Office 365 auf allen Rechnern einheitlich bereitgestellt wird und mit den IT-Richtlinien und -Standards des Unternehmens übereinstimmt. 

Ein tieferer Einblick in das PowerShell-Skript Install Office 365

Schauen wir uns ein PowerShell-Beispielskript für die Automatisierung von Office 365-Installationen genauer an. Dieses Skript wurde entwickelt, um Office 365 entweder mit einer benutzerdefinierten Konfigurationsdatei oder einer Standardkonfigurationsdatei zu installieren. Falls eine Installation fehlschlägt, gibt das Skript eine Fehlermeldung aus, was die Fehlersuche erleichtert.

Was dieses Skript besonders nützlich macht, ist seine Fähigkeit, das Office Deployment Tool von den Microsoft-Servern herunterzuladen und zu verwenden. Diese Funktion stellt sicher, dass immer die neueste Version von Office 365 für die Installation verwendet wird. Außerdem prüft das Skript, ob die Office 365-Suite korrekt installiert wurde, was eine zusätzliche Sicherheit bietet.

Nach einer erfolgreichen Installation löst das Skript einen Neustart des Systems aus. Dies ist besonders praktisch, da einige Office 365-Komponenten einen Neustart des Systems erfordern, um korrekt zu funktionieren. Das Skript ist außerdem mit einem Bereinigungsmechanismus ausgestattet, der aktiviert werden kann, um Installationsdateien nach der Installation von Office 365 zu entfernen.

PowerShell-Skript für die Installation von 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
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/de/nutzungsbedingungen
    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 {}

 

Zugang zu über 700+ Skripten im NinjaOne Dojo erhalten

Zugang erhalten

Skript-Beispielszenarien

Szenario 1: Bereitstellung im großen Maßstab

Nehmen wir an, Sie sind IT-Administrator in einem Unternehmen, das hundert neue Mitarbeiter:innen einstellen will. Die manuelle Installation von Office 365 auf jedem Computer wäre eine entmutigende Aufgabe. Stattdessen können Sie dieses PowerShell-Skript verwenden, um den Vorgang zu automatisieren. Wenn Sie NinjaOne verwenden, um das Skript auf jedem Gerät aus der Ferne auszuführen, können Sie Ihre Office 365 Installationen im gesamten Netzwerk standardisieren. Dieser rationelle Ansatz spart nicht nur wertvolle Zeit, sondern garantiert auch Einheitlichkeit – ein wesentliches Merkmal für die effektive Verwaltung einer großen IT-Infrastruktur.

Erfahren Sie mehr darüber, wie NinjaOne die Effizienz Ihrer IT-Infrastruktur verbessern kann.  

Link: https://www.ninjaone.com/de/effizienz

Szenario 2: Ferngesteuerte Arbeitskräfte 

Mit der Zunahme der Remotearbeit haben viele Unternehmen Mitarbeiter:innen, die von verschiedenen Standorten aus mit ihren eigenen Geräten arbeiten. Es kann eine Herausforderung sein, sicherzustellen, dass jeder Remote-Mitarbeiter eine korrekt installierte und konfigurierte Version von Office 365 hat. Wenn Sie dieses PowerShell-Skript an Ihre Remote-Mitarbeiter:innen verteilen, können diese die Installation selbst durchführen. Das Skript stellt sicher, dass Office 365 korrekt installiert und gemäß den Standards Ihres Unternehmens konfiguriert wird.

Szenario 3: MSP-Kundenmanagement

Als Managed Service Provider (MSP) verwalten Sie möglicherweise die IT für mehrere kleine Unternehmen, von denen jedes seine eigenen spezifischen Anforderungen und Konfigurationen hat. Mit diesem PowerShell-Skript können Sie mehrere XML-Konfigurationsdateien erstellen, die auf die Bedürfnisse der einzelnen Clients zugeschnitten sind. Wenn esan der Zeit ist, Office 365 für einen Client zu installieren oder zu aktualisieren, führen Sie einfach das Skript mit der entsprechenden Konfigurationsdatei aus. Dies gewährleistet eine individuelle und konsistente Office 365-Einrichtung für jeden Ihrer Kunden. 

Szenario 4: Regelmäßige Updates  

Office 365 wird von Microsoft regelmäßig aktualisiert, und die Installationen Ihres Unternehmens auf dem neuesten Stand zu halten kann eine zeitraubende Aufgabe sein. Mit diesem Skript können Sie automatische Aktualisierungen so planen, dass sie zu einem geeigneten Zeitpunkt ausgeführt werden und den Arbeitsablauf Ihres Teams nur minimal stören. Das Skript verwendet das Office Deployment Tool, um die neueste Version von Office 365 herunterzuladen und zu installieren, so dass Ihr Team immer Zugriff auf die neuesten Funktionen und Sicherheitsupdates hat. 

In jedem dieser Szenarien kann dieses PowerShell-Skript den Prozess der Installation und Verwaltung von Office 365 erheblich vereinfachen. Durch die Automatisierung dieser Aufgaben können Sie Zeit sparen, das Risiko von Fehlern verringern und eine konsistente und zuverlässige Office 365-Erfahrung für Ihre Benutzer:innen sicherstellen. 

Verwendung des Skripts in Ihrem Arbeitsablauf

Die Integration dieses PowerShell-Skripts in Ihren Arbeitsablauf kann den Prozess der Bereitstellung von Office 365 vereinfachen. Anstatt das Office Deployment Tool auf jedem Rechner manuell herunterzuladen und auszuführen, kann das Skript von einem zentralen Standort aus ausgeführt werden. Dadurch wird die Gefahr menschlicher Fehler verringert und eine Standardkonfiguration für alle Installationen gewährleistet.

Darüber hinaus können Sie durch die Anpassung der XML-Konfigurationsdatei die Office 365-Installation an die Bedürfnisse Ihres Unternehmens anpassen. Dazu gehört die Angabe der Office 365-Version, des Updatekanals und sogar der einzelnen zu installierenden Office-Komponenten.

Abschließende Überlegungen

Automatisierung ist der beste Freund eines IT-Profis, und PowerShell bietet eine leistungsstarke Möglichkeit zur Automatisierung von Office 365-Installationen. Dieses praktische Skript rationalisiert nicht nur den Bereitstellungsprozess, sondern bietet auch Anpassungsoptionen und Bereinigungsfunktionen.

Durch die Integration dieses Skripts in Ihren Arbeitsablauf können Sie den Zeit- und Arbeitsaufwand für die Verwaltung von Office 365-Installationen in Ihrem Netzwerk erheblich reduzieren. Nutzen Sie also die PowerShell und machen Sie Office 365-Bereitstellungen zu einem Kinderspiel.

NinjaOne kann Ihre Arbeitsabläufe durch die Automatisierung sich wiederholender und zeitaufwändiger Aufgaben rationalisieren. Dank der benutzerfreundlichen Oberfläche können Techniker:innen aller Ebenen problemlos Automatisierungen auf Endpunkte anwenden, einschließlich benutzerdefinierter Skripte aus einer umfangreichen Bibliothek, was die Wartung einfach und intuitiv macht. Wie Chris Hesler von Crossroads Church sagte: „NinjaOne hat geholfen, … unsere Arbeitsstunden zu reduzieren … wir sind in der Lage, mit der Skriptbibliothek mehr zu automatisieren, um unsere wiederkehrenden Probleme zu lösen.“ Entdecken Sie die transformative Kraft der Automatisierung in Ihrem IT-Betrieb mit NinjaOne, einem Tool, das auf Flexibilität und Intuitivität aufgebaut ist. 

Nächste Schritte

Der Aufbau eines effizienten und effektiven IT-Teams erfordert eine zentralisierte Lösung, die als vereintes Tool für die Bereitstellung von Dienstleistungen fungiert. NinjaOne ermöglicht es IT-Teams, alle ihre Geräte zu überwachen, zu verwalten, zu sichern und zu unterstützen, egal wo sie sich befinden, ohne dass eine komplexe Infrastruktur vor Ort erforderlich ist.

Erfahren Sie mehr über NinjaOne Endpoint Management, sehen Sie sich eine Live-Tour an oder starten Sie Ihren kostenlosen Test der NinjaOne-Plattform.

Das könnte Sie auch interessieren

Sind Sie bereit, ein IT-Ninja zu werden?

Erfahren Sie, wie Sie mit NinjaOne Ihren IT-Betrieb vereinfachen können.

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).