Share via


Tilldela Skype för företag Online-principer per användare med PowerShell för Microsoft 365

Denna artikel gäller för både Microsoft 365 Enterprise och Office 365 Enterprise.

Att använda PowerShell för Microsoft 365 är ett effektivt sätt att tilldela kommunikationsinställningar per användare med Skype för företag Online-principer.

Förbereda för att köra PowerShell-kommandon

Använd de här anvisningarna för att konfigurera för att köra kommandona (hoppa över de steg som du redan har slutfört):

Obs!

Skype för företag – Online-Connector är för närvarande en del av den senaste versionen av Teams PowerShell-modul. Om du använder den senaste versionen av Teams PowerShell, behöver du inte installera Skype för företag – Online-Connector.

  1. Installera Teams PowerShell-modul.

  2. Öppna en Windows PowerShell kommandotolk och kör följande kommandon:

    Import-Module MicrosoftTeams
    Connect-MicrosoftTeams
    

    När du uppmanas till det anger du ditt Skype för företag Online-administratörskontonamn och lösenord.

Uppdatera inställningar för extern kommunikation för ett användarkonto

Anta att du vill ändra externa kommunikationsinställningar för ett användarkonto. Du vill till exempel tillåta att Alex kommunicerar med federerade användare (EnableFederationAccess är lika med Sant) men inte med Windows Live-användare (EnablePublicCloudAccess är lika med False). För att göra det måste du göra två saker:

  1. Hitta en extern åtkomstprincip som uppfyller våra kriterier.

  2. Tilldela den externa åtkomstprincipen till Alex.

Hur avgör du vilken princip för extern åtkomst som ska tilldelas Alex? Följande kommando returnerar alla externa åtkomstprinciper där EnableFederationAccess är inställt på True och EnablePublicCloudAccess är inställt på False:

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

Om du inte har skapat några anpassade instanser av ExternalAccessPolicy returnerar det kommandot en princip som uppfyller våra kriterier (FederationOnly). Här är ett exempel:

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

Nu när du vet vilken princip som ska tilldelas Alex kan vi tilldela den principen med hjälp av cmdleten Grant-CsExternalAccessPolicy . Här är ett exempel:

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

Det är enkelt att tilldela en princip: du kan ange identiteten för användaren och namnet på den princip som ska tilldelas.

Och när det gäller principer och principtilldelningar är du inte begränsad till att arbeta med användarkonton en gång i taget. Anta till exempel att du behöver en lista över alla användare som får kommunicera med federerade partner och med Windows Live-användare. Vi vet redan att dessa användare har tilldelats den externa användaråtkomstprincipen FederationAndPICDefault. Eftersom vi vet det kan du visa en lista över alla dessa användare genom att köra ett enkelt kommando. Här är kommandot:

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

Visa med andra ord alla användare där egenskapen ExternalAccessPolicy är inställd på FederationAndPICDefault. (För att begränsa mängden information som visas på skärmen använder du cmdleten Select-Object för att visa endast varje användares visningsnamn.)

Om du vill konfigurera alla våra användarkonton så att de använder samma princip använder du det här kommandot:

Get-CsOnlineUser | Grant-CsExternalAccessPolicy "FederationAndPICDefault"

Det här kommandot använder Get-CsOnlineUser för att returnera en samling med alla användare som har aktiverats för Lync och skickar sedan all den informationen till Grant-CsExternalAccessPolicy, som tilldelar FederationAndPICDefault-principen till varje användare i samlingen.

Anta att du tidigare har tilldelat Alex federationandPICDefault-principen, och nu har du ändrat dig och vill att han ska hanteras av den globala externa åtkomstprincipen. Du kan inte uttryckligen tilldela den globala principen till någon. I stället används den globala principen för en viss användare om ingen princip per användare tilldelas till den användaren. Om vi vill att Alex ska hanteras av den globala principen måste du därför ta bort tilldelningen av alla principer per användare som tidigare tilldelats honom. Här är ett exempel på ett kommando:

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

Det här kommandot anger namnet på den princip för extern åtkomst som tilldelats Alex till ett null-värde ($Null). Null betyder "ingenting". Med andra ord tilldelas ingen extern åtkomstprincip till Alex. När ingen princip för extern åtkomst tilldelas till en användare hanteras den användaren av den globala principen.

Hantera ett stort antal användare

Om du vill hantera ett stort antal användare (1 000 eller fler) måste du batchhantera kommandona via ett skriptblock med cmdleten Invoke-Command . Varje gång en cmdlet körs i tidigare exempel måste den konfigurera anropet och sedan vänta på resultatet innan det skickas tillbaka. När du använder ett skriptblock gör detta att cmdletarna kan köras via fjärranslutning och när de har slutförts skickar du tillbaka data.

$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 "
    }
}

Detta hittar 500 användare åt gången som inte har någon klientprincip. Den ger dem klientprincipen "ClientPolicyNoIMURL" och den externa åtkomstprincipen "FederationAndPicDefault". Resultaten batchas i grupper om 50 och varje batch med 50 skickas sedan till fjärrdatorn.

Se även

Hantera Skype för företag – Online med PowerShell

Hantera Microsoft 365 med PowerShell

Börja använda PowerShell för Microsoft 365