Zuweisen von benutzerspezifischen Skype for Business Onlinerichtlinien mit PowerShell für Microsoft 365

Dieser Artikel gilt sowohl für Microsoft 365 Enterprise als auch für Office 365 Enterprise.

Die Verwendung von PowerShell für Microsoft 365 ist eine effiziente Möglichkeit, benutzerspezifische Kommunikationseinstellungen mit Skype for Business Onlinerichtlinien zuzuweisen.

Vorbereiten der Ausführung der PowerShell-Befehle

Bereiten Sie sich mithilfe dieser Anweisungen auf die Ausführung der Befehle vor (überspringen Sie die Schritte, die Sie bereits ausgeführt haben):

Hinweis

Der Skype for Business Online-Connector ist derzeit Bestandteil des aktuellen PowerShell-Moduls von Teams. Wenn Sie die neueste Version von Teams PowerShell verwenden, müssen Sie den Skype for Business Online-Connector nicht installieren.

  1. Installieren Sie das PowerShell-Modul von Teams.

  2. Öffnen Sie eine Windows PowerShell-Eingabeaufforderung, und führen Sie die folgenden Befehle aus:

    Import-Module MicrosoftTeams
    Connect-MicrosoftTeams
    

    Wenn Sie dazu aufgefordert werden, geben Sie den Namen und das Kennwort Ihres Skype for Business Online-Administratorkontos ein.

Aktualisieren externer Kommunikationseinstellungen für ein Benutzerkonto

Angenommen, Sie möchten Einstellungen für die externe Kommunikation für ein Benutzerkonto ändern. Sie möchten z. B. festlegen, dass Alex mit Partnerbenutzern kommunizieren darf (EnableFederationAccess = True), jedoch nicht mit Windows Live-Benutzern (EnablePublicCloudAccess = False). Hierzu müssen Sie zwei Schritte ausführen:

  1. Suchen Sie nach eine externe Zugriffsrichtlinie, die unsere Kriterien erfüllt.

  2. Weisen Sie Alex diese externe Zugriffsrichtlinie ist.

Wie bestimmen Sie, welche externe Zugriffsrichtlinie Alex zugewiesen werden soll? Der folgende Befehl gibt alle externen Zugriffsrichtlinien zurück, in denen EnableFederationAccess auf „True“ und EnablePublicCloudAccess auf „False“ festgelegt ist:

Get-CsExternalAccessPolicy -Include All| Where-Object {$_.EnableFederationAccess -eq $True -and $_.EnablePublicCloudAccess -eq $False}

Sofern Sie keine benutzerdefinierten Instanzen von ExternalAccessPolicy erstellt haben, gibt dieser Befehl eine Richtlinie zurück, die unseren Kriterien (FederationOnly) entspricht. Hier ist ein Beispiel:

Identity                          : Tag:FederationOnly
Description                       :
EnableFederationAccess            : True
EnableXmppAccess                  : False
EnablePublicCloudAccess           : False
EnablePublicCloudAudioVideoAccess : False
EnableOutsideAccess               : True

Nachdem Sie nun wissen, welche Richtlinie Alex zugewiesen werden soll, können wir diese Richtlinie mithilfe des Cmdlets Grant-CsExternalAccessPolicy zuweisen. Hier ist ein Beispiel:

Grant-CsExternalAccessPolicy -Identity "Alex Darrow" -PolicyName "FederationOnly"

Das Zuweisen einer Richtlinie ist einfach: Sie können die Identität des Benutzers und den Namen der richtlinie angeben, die zugewiesen werden soll.

Und wenn es um Richtlinien und Richtlinienzuweisungen geht, sind Sie nicht darauf beschränkt, einmal mit Benutzerkonten zu arbeiten. Gehen wir beispielsweise davon aus, Sie benötigen eine Liste aller Benutzer, die mit Verbundpartnern und Windows Live-Benutzern kommunizieren können. Wir wissen bereits, dass Benutzern die externe Benutzerzugriffsrichtlinie FederationAndPICDefault zugewiesen wurde. Da wir dies wissen, können Sie eine Liste aller benutzer anzeigen, indem Sie einen einfachen Befehl ausführen. Hier ist der Befehl:

Get-CsOnlineUser -Filter {ExternalAccessPolicy -eq "FederationAndPICDefault"} | Select-Object DisplayName

Anders gesagt, wir können alle Benutzer anzeigen, bei denen die ExternalAccessPolicy-Eigenschaft auf FederationAndPICDefault festgelegt ist. (Und zum Einschränken der am Bildschirm angezeigten Informationsmenge können Sie das Select-Object-Cmdlet verwenden, um nur die Anzeigenamen der Benutzer anzuzeigen).

Um alle Benutzerkonten so zu konfigurieren, dass sie die gleiche Richtlinie verwenden, geben Sie diesen Befehl ein:

Get-CsOnlineUser | Grant-CsExternalAccessPolicy "FederationAndPICDefault"

Dieser Befehl verwendet „Get-CsOnlineUser“, um eine Sammlung aller Benutzer zurückzugeben, die für Lync aktiviert wurden. Anschließend werden alle diese Informationen an „Grant-CsExternalAccessPolicy“ gesendet, das die Richtlinie „FederationAndPICDefault“ jedem Benutzer in der Sammlung zuweist.

Angenommen, Sie haben Alex zuvor die FederationAndPICDefault-Richtlinie zugewiesen, und jetzt haben Sie Ihre Meinung geändert und möchten, dass er von der globalen externen Zugriffsrichtlinie verwaltet wird. Sie können die globale Richtlinie niemandem explizit zuweisen. Stattdessen wird die globale Richtlinie für einen bestimmten Benutzer verwendet, wenn diesem Benutzer keine Benutzerrichtlinie zugewiesen ist. Wenn Sie also möchten, dass Alex von der globalen Richtlinie verwaltet wird, müssen Sie die Zuweisung aller zuvor zugewiesenen benutzerspezifischen Richtlinien wieder aufheben. Hier sehen Sie einen Beispielbefehl:

Grant-CsExternalAccessPolicy -Identity "Alex Darrow" -PolicyName $Null

Dieser Befehl legt den Namen der Alex zugewiesenen externen Zugriffsrichtlinie auf einen Nullwert ($Null) fest. Null bedeutet „nichts". Anders ausgedrückt, Alex wird keine externe Zugriffsrichtlinie zugewiesen. Wenn einem Benutzer keine externe Zugriffsrichtlinie zugewiesen ist, wird der Benutzer von der globalen Richtlinie verwaltet.

Verwalten einer großen Anzahl von Benutzern

Um eine große Anzahl von Benutzern (1.000 oder mehr) zu verwalten, müssen Sie die Befehle über einen Skriptblock mithilfe des Cmdlets Invoke-Command in Batches stapeln. In vorherigen Beispielen muss jedes Mal, wenn ein Cmdlet ausgeführt wird, den Aufruf einrichten und dann auf das Ergebnis warten, bevor es zurücksendet wird. Wenn Sie einen Skriptblock verwenden, können die Cmdlets remote ausgeführt werden und nach Abschluss der Ausführung die Daten zurücksenden.

$s = Get-PSSession | Where-Object { ($.ComputerName -like '*.online.lync.com' -or $.Computername -eq 'api.interfaces.records.teams.microsoft.com') -and $.State -eq 'Opened' -and $.Availability -eq 'Available' }

$users = Get-CsOnlineUser -Filter { ClientPolicy -eq $null } -ResultSize 500

$batch = 50
$filter = ''
$total = $users.Count
$count = 0
    $users | ForEach-Object {
    $upn = $_.UserPrincipalName
    $filter += "(UserPrincipalName -eq '$upn')"
    $batch--
    $count++
    if (($batch -eq 0) -or ($count -eq $total)) {
        $filterSB=[ScriptBlock]::Create($filter)
        Invoke-Command -Session $s -ScriptBlock {param($f) Get-CsOnlineUser -filter $f | Grant-CsClientPolicy -PolicyName "ClientPolicyNoIMURL" -Passthru | Grant-CsExternalAccessPolicy -PolicyName "FederationAndPICDefault"} -ArgumentList $filterSB

        # Reset
        $batch = 50
        $filter = ''
    } else {
        $filter += " -or "
    }
}

Dadurch werden 500 Benutzer gleichzeitig gefunden, die keine Clientrichtlinie besitzen. Es gewährt ihnen die Clientrichtlinie "ClientPolicyNoIMURL" und die externe Zugriffsrichtlinie "FederationAndPicDefault". Die Ergebnisse werden in Gruppen von 50 Batches zusammengefasst, und jeder Batch von 50 wird dann an den Remotecomputer gesendet.

Siehe auch

Verwalten von Skype for Business Online mit PowerShell

Verwalten von Microsoft 365 mit PowerShell

Erste Schritte mit PowerShell für Microsoft 365