Microsoft 365용 PowerShell을 사용하여 사용자별 비즈니스용 Skype Online 정책 할당

이 문서는 Microsoft 365 Enterprise와 Office 365 Enterprise에 모두 적용됩니다.

Microsoft 365용 PowerShell을 사용하는 것은 비즈니스용 Skype Online 정책을 사용하여 사용자별 통신 설정을 할당하는 효율적인 방법입니다.

PowerShell 명령 실행 준비

다음 지침을 사용하여 명령을 실행하도록 설정합니다(이미 완료한 단계를 건너뛰기).

참고

Skype for Business Online Connector는 현재 최신 Teams PowerShell 모듈의 일부입니다. 최신 Teams PowerShell 공개 릴리스를 사용 중인 경우 비즈니스용 Skype Online 커넥터를 설치할 필요가 없습니다.

  1. Teams PowerShell 모듈를 설치합니다.

  2. Windows PowerShell 명령 프롬프트를 열고 다음 명령을 실행합니다.

    Import-Module MicrosoftTeams
    Connect-MicrosoftTeams
    

    메시지가 표시되면 비즈니스용 Skype Online 관리자 계정 이름 및 암호를 입력합니다.

사용자 계정에 대한 외부 통신 설정 업데이트

사용자 계정에서 외부 통신 설정을 변경하려는 경우를 가정해 보겠습니다. 예를 들어 Alex가 페더레이션된 사용자와 통신할 수 있도록 허용하려고 하지만(EnableFederationAccess는 True와 동일) Windows Live 사용자와는 통신하지 않습니다(EnablePublicCloudAccess는 False와 같음). 이렇게 하려면 다음 두 가지 작업을 수행해야 합니다.

  1. 기준을 충족하는 외부 액세스 정책을 찾습니다.

  2. 해당 외부 액세스 정책을 Alex에게 할당합니다.

Alex를 할당할 외부 액세스 정책을 어떻게 결정합니까? 다음 명령은 EnableFederationAccess가 True로 설정되고 EnablePublicCloudAccess가 False로 설정된 모든 외부 액세스 정책을 반환합니다.

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

ExternalAccessPolicy의 사용자 지정 인스턴스를 만들지 않은 경우 해당 명령은 조건을 충족하는 하나의 정책(FederationOnly)을 반환합니다. 다음은 예입니다.

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

이제 Alex에 할당할 정책을 알고 있으므로 Grant-CsExternalAccessPolicy cmdlet을 사용하여 해당 정책을 할당할 수 있습니다. 다음은 예입니다.

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

정책 할당은 간단합니다. 사용자의 ID와 할당할 정책의 이름을 지정할 수 있습니다.

정책 및 정책 할당과 관련하여 한 번에 한 번 사용자 계정으로 작업하는 것이 제한되지 않습니다. 페더레이션 파트너 및 Windows Live 사용자와 통신할 수 있는 모든 사용자의 목록이 필요한 경우를 예로 들어 보겠습니다. 여기서 해당 사용자에게는 외부 사용자 액세스 정책 FederationAndPICDefault가 이미 할당되어 있습니다. 이 사실을 알고 있으므로 간단한 명령을 실행하여 모든 사용자 목록을 표시할 수 있습니다. 명령은 다음과 같습니다.

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

이처럼 ExternalAccessPolicy 속성이 FederationAndPICDefault로 설정된 모든 사용자가 표시됩니다. (그리고 화면에 표시되는 정보의 양을 제한하려면 Select-Object cmdlet을 사용하여 각 사용자의 표시 이름만 표시합니다.)

동일한 정책을 사용하도록 모든 사용자 계정을 구성하려면 다음 명령을 사용합니다.

Get-CsOnlineUser | Grant-CsExternalAccessPolicy "FederationAndPICDefault"

이 명령은 Get-CsOnlineUser 사용하여 Lync에 대해 사용하도록 설정된 모든 사용자의 컬렉션을 반환한 다음, 해당 모든 정보를 Grant-CsExternalAccessPolicy로 전송하며, 이 정보는 컬렉션의 모든 사용자에게 FederationAndPICDefault 정책을 할당합니다.

또 다른 예로, 이전에 Alex에게 FederationAndPICDefault 정책을 할당했고 이제 마음이 바뀌었으며 전역 외부 액세스 정책으로 관리되기를 원했다고 가정해 보겠습니다. 전역 정책을 누구에게나 명시적으로 할당할 수 없습니다. 대신 해당 사용자에게 사용자별 정책이 할당되지 않은 경우 지정된 사용자에 대해 전역 정책이 사용됩니다. 따라서 Alex가 글로벌 정책에 의해 관리되도록 하려면 이전에 할당된 사용자별 정책을 할당 취소 해야 합니다. 다음은 예제 명령입니다.

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

이 명령은 Alex에 할당된 외부 액세스 정책의 이름을 null 값($Null)으로 설정합니다. Null은 "nothing"을 의미합니다. 즉, 외부 액세스 정책이 Alex에 할당되지 않습니다. 외부 액세스 정책이 사용자에게 할당되지 않은 경우 해당 사용자는 전역 정책에 의해 관리됩니다.

많은 수의 사용자 관리

많은 수의 사용자(1000명 이상)를 관리하려면 Invoke-Command cmdlet을 사용하여 스크립트 블록을 통해 명령을 일괄 처리해야 합니다. 이전 예제에서는 cmdlet이 실행될 때마다 호출을 설정한 다음 결과를 기다렸다가 다시 보내야 합니다. 스크립트 블록을 사용하는 경우 cmdlet을 원격으로 실행하고 완료되면 데이터를 다시 보낼 수 있습니다.

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

클라이언트 정책이 없는 한 번에 500명의 사용자를 찾습니다. 클라이언트 정책 "ClientPolicyNoIMURL" 및 외부 액세스 정책 "FederationAndPicDefault"를 부여합니다. 결과는 50개의 그룹으로 일괄 처리되고 50의 각 일괄 처리는 원격 머신으로 전송됩니다.

참고 항목

PowerShell을 통해 비즈니스용 Skype Oline 관리

PowerShell로 Microsoft 365 관리

Microsoft 365 용 PowerShell 시작