Compartir vía


Cambio de los modos de barreras de información con un script de PowerShell

Use este script de PowerShell para actualizar el modo de barreras de información (IB) para todos los grupos conectados a Teams en el inquilino. Tendrá que actualizar el modo de estos grupos después de implementar barreras de información. A los grupos aprovisionados antes de habilitar IB se les asigna el modo Abierto . En el modo Abierto , no hay ninguna directiva de IB aplicable. Después de habilitar IB, Implícito se convierte en el modo predeterminado para los nuevos grupos que cree. Sin embargo, los grupos existentes siguen manteniendo la configuración del modo abierto . Ejecute este script para cambiar estos grupos existentes al modo implícito .

En este script, usará el cmdlet Get-UnifiedGroup , que se encuentra en el módulo de PowerShell de Exchange Online para actualizar el modo. Para obtener más información sobre cómo administrar Teams mediante PowerShell, consulte Introducción a PowerShell de Teams.

Script de ejemplo

Importante

Microsoft recomienda usar roles con los permisos más mínimos. Minimizar el número de usuarios con el rol administrador global ayuda a mejorar la seguridad de la organización. Obtenga más información sobre los roles y permisos de Microsoft Purview.

Tendrá que usar una cuenta profesional o educativa a la que se haya asignado el rol de administrador global para que el inquilino ejecute este script.

<#
.SYNOPSIS
This script updates the information barrier mode for all Teams-connected groups in your tenant at the same time.
.DESCRIPTION
Use this script to update the info barrier mode from open to implicit across the groups in your tenant.
#>

$teams = Get-UnifiedGroup -Filter {ResourceProvisioningOptions -eq "Team"} -ResultSize Unlimited

Write-Output ([string]::Format("Number of Teams = {0}", @($teams).Length))

$teamsToUpdate = New-Object System.Collections.ArrayList

foreach($team in $teams)
{
  if ($team.InformationBarrierMode -eq "Open")
  {
    $teamsToUpdate.Add($team.ExternalDirectoryObjectId) | out-null
  }
}

Write-Output ([string]::Format("Number of Teams to be backfilled = {0}", @($teamsToUpdate).Length))

$outfile = "BackfillFailedTeams.csv"

if (!(Test-Path "$outfile"))
{
  $newcsv = {} | Select "ExternalDirectoryObjectId", "ExceptionDetails" | Export-Csv $outfile -NoTypeInformation  
}
else
{
  $dateTime = Get-Date
  $newEntry = "{0},{1}" -f "New session started", $dateTime
  $newEntry | add-content $outfile
}

$SuccessfullyBackfilledGroup = 0

for($i = 0; $i -lt @($teamsToUpdate).Length; $i++)
{
  Invoke-Command { Set-UnifiedGroup $teamsToUpdate[$i] -InformationBarrierMode "Implicit" } -ErrorVariable ErrorOutput

  if ($ErrorOutput)
  {
    # saving the errors in a csv file
    $errorBody = $ErrorOutput[0].ToString() -replace "`n"," " -replace "`r"," " -replace ",", " "
    $newEntry = "{0},{1}" -f $teamsToUpdate[$i].ToString(), '"' + $errorBody + '"'
    $newEntry | add-content $outfile
  }
  else
  {
    $SuccessfullyBackfilledGroup++
  }

  if (($i+1) % 100 -eq 0)
  {
    # print the number of teams backfilled after the batch of 100 updates
    Write-Output ([string]::Format("Number of Teams processed= {0}", $i+1)) 
  }
}

Write-Output ([string]::Format("Backfill completed. Groups backfilled: {0}, Groups failed to backfill: {1}", $SuccessfullyBackfilledGroup, @($teamsToUpdate).Length - $SuccessfullyBackfilledGroup))

if (!($SuccessfullyBackfilledGroup -eq @($teamsToUpdate).Length))
{
  Write-Output ([string]::Format("Check the failed teams in BackfillFailedTeams.csv, retry to backfill the failed teams.")) 
}