Office 365 - Powershell

Für die Verwaltung von Office 365 eignet sich in einem kleinen Rahmen schon die GUI, besonders wenn Sie keinen Verzeichnisabgleich benutzen und die Anwender einer kleinen Firma (Siehe auch Office 365 - Zielgruppe) sich selten ändern.

Wer aber größere Stammdaten zu pflegen hat oder diese per Dirsync noch mit einem lokalen Active Directory verbunden sind, wird schnell eine Option suchen, um elegant Massenänderungen durchzuführen. Einige Änderungen können Sogar gar nicht über die Weboberfläche erfolgen. Der Zugriff per Powershell ist zum Glück nicht sonderlich schwer.

Office 365 Powershell installieren

Die Powershell Erweiterung sind ein kostenfrei von Microsoft Online erhältlicher Download. Damit diese aber funktionieren, muss auch "Microsoft Online Services Sign-In Assistant" installiert sein. Er addiert ein paar Einträge in der Registrierung, dass die Powershell auch die Online Dienste erreichen kann. (Siehe auch Office 365 Client)

Nach der Installation ist in der Regel kein Neustart erforderlich.

Office 365 Powershell starten und verbinden

Nach der Installation findet sich auf dem Desktop und im Startmenü der passende Link zum Start der Powershell

Wie bei einer Powershell üblich hat ein Anwender dann erst mal eine schwarze Box vor sieht.

Hinweis:
Wenn Sie in der Powershell z.B. ADFS einrichten wollen, dann müssen Sie auf dem ADFS-Server sein und die Powershell "Als Administrator" starten, da die Commandlets auch lokal Änderungen durchführen.

Der erste Schritt ist daher die Herstellung einer Verbindung:

In einigen Anleitungen werden noch alte Commandlets (z.B. set-MSOLContextCredential) verwendet, die aber nicht mehr gültig sind.

In der Version vom Jan 2012 wird eine Verbindung mit dem "Connect-MsolService"-Commandlet hergestellt, welches interaktiv nach den Anmeldedaten fragt oder per Parameter vorab erfasste credentials übernimmt.

Connect-MSOLService

Im Netmon kann man gut sehen, dass die komplette Kommunikation per HTTPS abgewickelt wird:

Wer nicht die Powershell über das Startmenü aufrufen will, sondern in einem bestehenden Skript einfach die Commandlets aktivieren will, der kann das Modul auch manuell nachladen.

PS> Get-Module | fl

Name              : MSOnline
Path              : C:\Windows\system32\WindowsPowerShell\v1.0\Modules\MSOnline
                    \Microsoft.Online.Administration.Automation.PSModule.dll
Description       : Microsoft Online Services Module for Windows PowerShell
ModuleType        : Binary
Version           : 1.0
NestedModules     : {Microsoft.Online.Identity.Federation.PowerShell}
ExportedFunctions : {}
ExportedCmdlets   : {Add-MsolGroupMember, Add-MsolRoleMember, Confirm-MsolDomai
                    n, Connect-MsolService...}
ExportedVariables : {}
ExportedAliases   : {}

Das Microsoft Online Modul laden Sie dann also mit folgendem Befehl nach:

import-module msonline

Commandlets für Office 365

Dank der Funktion "get-Command" und dem Wissen, dass alle Office 365 Commandlets ein "MSOL" im Namen tragen, können Sie recht einfach eine vollständige Liste erhalten.

PS> get-command *msol*

CommandType     Name                            Definition
-----------     ----                            ----------
Cmdlet          Add-MsolGroupMember             Add-MsolGroupMember -GroupOb...
Cmdlet          Add-MsolRoleMember              Add-MsolRoleMember -RoleObje...
Cmdlet          Confirm-MsolDomain              Confirm-MsolDomain -DomainNa...
Cmdlet          Connect-MsolService             Connect-MsolService [-Verbos...
Cmdlet          Convert-MsolDomainToFederated   Convert-MsolDomainToFederate...
Cmdlet          Convert-MsolDomainToStandard    Convert-MsolDomainToStandard...
Cmdlet          Convert-MsolFederatedUser       Convert-MsolFederatedUser -U...
Cmdlet          Get-MsolAccountSku              Get-MsolAccountSku [-TenantI...
Cmdlet          Get-MsolCompanyInformation      Get-MsolCompanyInformation [...
Cmdlet          Get-MsolContact                 Get-MsolContact [-HasErrorsO...
Cmdlet          Get-MsolDomain                  Get-MsolDomain [-Status <Nul...
Cmdlet          Get-MsolDomainFederationSett... Get-MsolDomainFederationSett...
Cmdlet          Get-MsolDomainVerificationDns   Get-MsolDomainVerificationDn...
Cmdlet          Get-MsolFederationProperty      Get-MsolFederationProperty [...
Cmdlet          Get-MsolGroup                   Get-MsolGroup [-UserObjectId...
Cmdlet          Get-MsolGroupMember             Get-MsolGroupMember [-GroupO...
Cmdlet          Get-MsolPartnerContract         Get-MsolPartnerContract [-Do...
Cmdlet          Get-MsolPartnerInformation      Get-MsolPartnerInformation [...
Cmdlet          Get-MsolRole                    Get-MsolRole [-TenantId <Nul...
Cmdlet          Get-MsolRoleMember              Get-MsolRoleMember [-RoleObj...
Cmdlet          Get-MsolSubscription            Get-MsolSubscription [-Tenan...
Cmdlet          Get-MsolUser                    Get-MsolUser [-ReturnDeleted...
Cmdlet          Get-MsolUserRole                Get-MsolUserRole -ObjectId <...
Cmdlet          New-MsolDomain                  New-MsolDomain [-Name <Strin...
Cmdlet          New-MsolFederatedDomain         New-MsolFederatedDomain [-Su...
Cmdlet          New-MsolGroup                   New-MsolGroup [-DisplayName ...
Cmdlet          New-MsolLicenseOptions          New-MsolLicenseOptions -Acco...
Cmdlet          New-MsolUser                    New-MsolUser [-ImmutableId <...
Cmdlet          Remove-MsolContact              Remove-MsolContact -ObjectId...
Cmdlet          Remove-MsolDomain               Remove-MsolDomain -DomainNam...
Cmdlet          Remove-MsolFederatedDomain      Remove-MsolFederatedDomain [...
Cmdlet          Remove-MsolGroup                Remove-MsolGroup -ObjectId <...
Cmdlet          Remove-MsolGroupMember          Remove-MsolGroupMember -Grou...
Cmdlet          Remove-MsolRoleMember           Remove-MsolRoleMember -RoleO...
Cmdlet          Remove-MsolUser                 Remove-MsolUser -ObjectId <G...
Cmdlet          Restore-MsolUser                Restore-MsolUser -ObjectId <...
Cmdlet          Set-MsolADFSContext             Set-MsolADFSContext [-ADFSUs...
Cmdlet          Set-MsolCompanyContactInform... Set-MsolCompanyContactInform...
Cmdlet          Set-MsolCompanySettings         Set-MsolCompanySettings [-Se...
Cmdlet          Set-MsolDirSyncEnabled          Set-MsolDirSyncEnabled -Enab...
Cmdlet          Set-MsolDomain                  Set-MsolDomain [-Name <Strin...
Cmdlet          Set-MsolDomainAuthentication    Set-MsolDomainAuthentication...
Cmdlet          Set-MsolDomainFederationSett... Set-MsolDomainFederationSett...
Cmdlet          Set-MsolGroup                   Set-MsolGroup [-ObjectId <Nu...
Cmdlet          Set-MsolPartnerInformation      Set-MsolPartnerInformation [...
Cmdlet          Set-MsolUser                    Set-MsolUser [-ImmutableId <...
Cmdlet          Set-MsolUserLicense             Set-MsolUserLicense -ObjectI...
Cmdlet          Set-MsolUserPassword            Set-MsolUserPassword -Object...
Cmdlet          Set-MsolUserPrincipalName       Set-MsolUserPrincipalName -O...
Cmdlet          Update-MsolFederatedDomain      Update-MsolFederatedDomain [...


#Alternativen
PS> (Get-Module msonline).exportedcommands

PS> get-command -Module msonline

Die alternativen Wegen zeigen ihnen auch alle Kommandos an. Mit GET-HELP "Commandletname".

Kommunikation

Wer mit dem Netzwerkmonitor kontrolliert, welche Dienste und Ports genutzt werden, wird sehr schnell HTTPS als einziges Protokoll erkennen. Insofern ist es also ausreichend, wenn Sie von ihrem Client "Surfen" können.

Limits

Analog zu den Powershell-Befehlen für das Active Directory und Exchange laden auch die MSOL-Commandlets nicht alle Elemente sondern laden nur die ersten 250 Einträge. Kleinere Firmen werden damit in der Regel kein Problem haben, aber wenn Sie ein Skript entwickelt, dann müssen Sie daraus Rücksicht nehmen, indem Sie schon über entsprechende Filter-Parameter die Anzahl der Elemente reduzieren oder eben ausreichend viele (sprich alle) Elemente holen und danach filtern.

get-MSOLGroup / get-MSOLGroupMember

-All [<SwitchParameter>]
    Wenn dieser Parameter vorhanden ist, werden alle Ergebnisse zurückgegeb
    en. Kann nicht zusammen mit dem Parameter "MaxResults" verwendet werden

 -MaxResults <int>
     Die Höchstanzahl der für eine Suche zurückgegebenen Ergebnisse. Wenn ke
     in Wert angegeben ist, werden 250 Ergebnisse zurückgegeben.
get-MSOLUser / get-MSOLContact

-All [<SwitchParameter>]
Wenn dieser Parameter vorhanden ist, werden alle Ergebnisse zurückgegeb
en. Kann nicht zusammen mit dem Parameter "MaxResults" verwendet werden

-MaxResults <int>
    Die Höchstanzahl der für eine Suche zurückgegebenen Ergebnisse. Wenn ke
    in Wert angegeben ist, werden 500 Ergebnisse zurückgegeben.

Exchange und andere

Bitte beachten Sie, dass diese Powershell nur zur Verwaltung von Office 365 Konten dient aber nicht für Exchange oder Sharepoint genutzt werden kann. Hierzu gibt es eigene Zugängen, wie z.B. die Exchange Remote Powershell.

$Session = New-PSSession `
    -ConfigurationName Microsoft.Exchange 
`   -ConnectionUri https://ps.outlook.com/powershell/ `
    -Credential $Cred `
    -Authentication Basic `
    -AllowRedirection 

Beispiele

Demo Scripts for Using Remote Windows PowerShell to Manage Office 365
http://www.microsoft.com/en-us/download/details.aspx?id=41953

Demo Scripts for Using Remote Windows PowerShell to Manage Office 365 Now Available
http://blogs.technet.com/b/nexthop/archive/2014/02/21/demo-scripts-for-using-remote-windows-powershell-to-manage-office-365-now-available.aspx

Weitere Links

Tags:Office365 Cloud Hosting