Agregar/eliminar permisos de calendario en Office 365/Exchange via PowerShell

Este es un tutorial sobre cómo ver, agregar y eliminar permisos de calendario de buzón de correo en Office 365 (y en el Exchange local) para sus usuarios a través de PowerShell. Por ejemplo, debe otorgar permisos de lectura al calendario del buzón de correo de la sala para algunos usuarios. Puede otorgar permisos de calendario de buzón de sala para usuarios específicos o para un grupo de seguridad AD . En la mayoría de los casos, debe asignar permisos de calendario a un grupo de seguridad. En este caso, para conceder acceso al calendario de buzón de correo específico, todo lo que tiene que hacer es agregar el usuario al grupo Active Directory (sin cambiar los permisos de calendario de buzón de correo a través de PowerShell).

De forma predeterminada, en Exchange y Office 365 los usuarios de la organización no pueden ver los mensajes de correo electrónico de Outlook ni los elementos del calendario de otros usuarios. El único permiso que se proporciona a todos los usuarios de forma predeterminada es la capacidad de ver los datos de Libre/Ocupado en los calendarios de otros usuarios (esta es la función AvailabilityOnly ).

Los usuarios pueden conceder de forma independiente los permisos necesarios para las carpetas y elementos del buzón de Outlook a otros usuarios desde la interfaz de Outlook/OWA. Lamentablemente, en Exchange 2016/2013 y Exchange Online (Office 365), el administrador no puede gestionar de forma centralizada los permisos de calendario desde la interfaz gráfica de usuario (Exchange MMC, EAC-Exchange Administration Center o el portal de administración de Office 365). Sin embargo, puede usar un cmdlet integrado Add-MailboxFolderPermission , que permite administrar los permisos de usuario en cualquier carpeta de buzón de correo de los usuarios desde PowerShell (este cmdlet apareció por primera vez en Exchange Server 2010). Este cmdlet también es compatible con Office 365.

Contenido

Conectando Office 365/Exchange desde PowerShell

Primero que nada, necesitas conectarte a tu Oficina 365 o al inquilino de la Bolsa de Comercio.

  1. Ejecute el CLI de Windows PowerShell como un Administrador;

  2. Ejecute el siguiente comando para guardar las credenciales de su administrador en la variable PowerShell:

    $LiveCred = Get-Credential
  3. Si está intentando conectarse a Office 365, especifique sus credenciales de administrador de inquilino de Office 365;

    Nota. Cómo conectar y administrar Office 365 usando PowerShell .

  4. Ahora necesitas crear una nueva sesión:

    Para la Oficina 365:

    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $LiveCred -Authentication Basic -AllowRedirection

    Para Exchange Server 2010, 2013, 2016 y 2019:

    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https:///powershell/ -Credential $LiveCred

    Nota. En nuestro caso cuando intentamos ejecutar el comando anterior para conectar Exchange 2010 hemos recibido un error:

    [ny-msg-02] La conexión con el servidor remoto falló con el siguiente mensaje de error: El cliente WinRM no puede procesar la solicitud. El cliente WinRM intentó usar el mecanismo de autenticación Negotiate, pero el ordenador de destino (ny-msg-02:443) devolvió un error de “acceso denegado”. Cambie la configuración para permitir el uso del mecanismo de autenticación Negotiate o especifique uno de los mecanismos de autenticación soportados por el servidor. Para utilizar Kerberos, especifique el nombre del ordenador local como destino remoto. También verifique que la computadora cliente y la computadora de destino estén unidas a un dominio. Para utilizar Basic, especifique el nombre de la computadora local como destino remoto, especifique la autenticación Basic y proporcione el nombre de usuario y la contraseña. Posibles mecanismos de autenticación notificados por el servidor.

  5. En nuestro entorno, para conectar con el servidor CAS de Exchange de destino debemos utilizar la conexión http (en lugar de https) y la autenticación Kerberos. El comando de conexión debería verse así:

    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://ny-msg-02/powershell/ -Credential $LiveCred -Authentication Kerberos
  6. El siguiente paso es importar los comandos de administración de Office 365/Exchange de otra sesión a la consola de PowerShell:

    Importar Sesión-Psesión $Sesión

    Consejo. Ocurre que cuando ejecutas el comando Importar-Sesión-Psesión, obtienes un error:

    Importación-Sesión P.S: Los archivos no pueden ser cargados ya que la ejecución de scripts ha sido desactivada en este sistema. Proporcione un certificado válido con el que firmar los archivos.

    En este caso, es necesario permitir la ejecución del guión, estableciendo la política de ejecución a RemoteSigned:

    Set-ExecutionPolicy RemoteSigned

Pista. Si ha iniciado sesión directamente en el servidor de Exchange local, puede iniciar el Shell de administración de Exchange inmediatamente o iniciar una sesión regular de Exchange Management Shell y cargar los cmdlets de Exchange con el comando:

Add-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn

¿Cómo obtener permisos de calendario usando PowerShell?

  • Puede ver los permisos actuales de calendario (a nivel de carpeta) del buzón especificado utilizando el cmdlet Get-MailboxFolderPermission (este cmdlet está disponible en el servicio basado en la nube y en el Exchange on-premises):

    Get-MailboxFolderPermission nombre de usuario:calendario
  • Cambia el nombre de usuario por la cuenta de usuario para la que quieres comprobar los permisos del calendario;

    Pista . Si al ejecutar los siguientes comandos, se obtiene un error:

    Get-MailboxFolderPermission : El término $0027Get-MailboxFolderPermission$0027 no se reconoce como el nombre de un cmdlet, función, archivo de guión o programa operable. Revise la ortografía del nombre, o si se incluyó un camino, verifique que el camino sea correcto e intente de nuevo

    esto significa que no completó los pasos para conectarse a su inquilino de Exchange/Office 365 y no importó los cmdlets de PowerShell Exchange a su sesión. Lea atentamente y siga los pasos del párrafo anterior.

    Nota . Si este comando devuelve que $0027username:calendar$0027 no se puede encontrar, lo más probable es que signifique que el usuario tiene ajustes de idioma de Outlook distintos del inglés. Apropiadamente, la carpeta Calendario puede ser llamada de manera diferente (calendarkalendercalendariocalendrierкалендарь). Por ejemplo, para el idioma holandés (nl-NL), para ver los permisos del calendario, usa el comando:

    Get-MailboxFolderPermission nombre de usuario:Agenda
  • Puedes obtener el nombre del calendario en la configuración de idioma del usuario actual con el comando:

    (Get-MailboxFolderStatistics nombre de usuario -FolderScope Calendar).Identidad

  • Revisa los permisos del calendario actual con el comando:

    Get-MailboxFolderPermission brett.jackson:calendar
  • Como puede ver, el rol predeterminado de Sólo Disponibilidad se asigna sólo en una carpeta del calendario.

  • Puede obtener la lista de todos los permisos de los calendarios de buzones de su organización mediante el siguiente comando:

    Get-Mailbox | ForEach-Object {Get-MailboxFolderPermission $_":calendar"} | Donde {$_.User -como "Default"} | Seleccionar Identidad, Usuario, Derechos de Acceso 

    Consejo. En el Intercambio en el local, puede ver la configuración del calendario del usuario en una base de datos de buzones específicos con el comando:

    Get-Mailbox -database mbxdbname | ForEach-Object {get-MailboxFolderPermission $_":calendar"}
  • Cambie mbxdbname por el nombre de su base de datos de buzones de Exchange.

Funciones de acceso al calendario y a la carpeta de correo incorporadas

Al administrar los permisos del calendario y de la carpeta de correo, puede utilizar las siguientes funciones incorporadas de Exchange:

  • Propietario – da el control total de la carpeta del buzón: leer, crear, modificar y borrar todos los elementos y carpetas. También este rol permite gestionar los permisos de los elementos;
  • PublishingEditor – leer, crear, modificar y borrar elementos/subcarpetas (todos los permisos excepto el derecho a cambiar los permisos);
  • Editor – leer, crear, modificar y borrar elementos (no se pueden crear subcarpetas);
  • PublishingAuthor – crear, leer todos los elementos/subcarpetas. Puedes modificar y borrar sólo los elementos que crees;
  • Autor – crear y leer elementos; editar y borrar elementos propios;
  • NonEditingAuthor – acceso completo de lectura y creación de elementos. Sólo puedes borrar tus propios elementos;
  • Revisor – sólo lee los elementos de la carpeta;
  • Colaborador – crear elementos y carpetas (no puede leer los elementos);
  • AvailabilityOnly – lee la información de Libre/Ocupado del calendario;
  • LimitedDetails ;
  • Ninguno – no hay permisos para acceder a la carpeta y los archivos.

¿Cómo configurar los permisos de Office 365/Cambiar el calendario usando PowerShell?

  1. Para conceder al usuario user2 los permisos para ver y editar los elementos del calendario user1 , ejecute el siguiente comando:

    Add-MailboxFolderPermission -Identidad user1@domain.com:calendar -user user2@domain.com -AccessRights Editor
  2. Si necesita cambiar los permisos predeterminados de la carpeta de calendarios (para permitir que todos los usuarios de la organización vean un calendario del usuario especificado), ejecute el comando:

    Set-MailboxFolderPermission -Identidad user1@domain.com:calendar -User Default -AccessRights Reviewer
  3. Revisa los permisos del calendario actual de nuevo usando el cmdlet Get-MailboxFolderPermissions, deberían cambiar:

    Get-MailboxFolderPermission -Identidad user1@domain.com:calendar

    FolderName User AccessRights

    —- — —-

    Calendario por defecto {Revisor}

    Calendario Anónimo {None}

    Usuario del calendario2 {Editor}

  4. También puede conceder permisos al buzón no a un usuario individual, sino al grupo de distribución de Exchange:

    New-DistributionGroup -Type Security -Nombre "Propietarios del Calendario de Recursos" -Alias "grResourceCalendarAccess"
    add-MailboxFolderPermission -Identidad user1@domain.com:calendar -User grResourceCalendarAccess -AccessRights Owner
  5. En algunos casos, es necesario conceder permisos de Revisor en una carpeta de calendario en todos los buzones de correo de los usuarios de la organización de Exchange. Puede hacer que estos permisos de calendario masivo cambien utilizando un simple script de PowerShell. Para cambiar el permiso de calendario predeterminado de todos los buzones de correo a Revisor:

    Get-Mailbox | ForEach-Object {Set-MailboxFolderPermission $_":calendar" -User Default -AccessRights Reviewer}
  6. Además, puede preparar un archivo CSV con una lista de usuarios y asignarles permisos para acceder al calendario de un usuario específico:

    Import-Csv users.csv | foreach { add-MailboxFolderPermission -Identidad "user1@domain.com:calendar" -Usuario $_.alias -AccessRights Owner }

¿Cómo añadir el calendario compartido en Outlook 2016?

Para ver otros calendarios en Outlook 2016 (incluidos los recursos de salas, los calendarios compartidos), cambie a la vista de calendario y seleccione el tipo de calendario al que desea añadir. Puede seleccionar un usuario de Agenda de direcciones (Lista global de direcciones – GAL), Calendario compartido abierto (debe especificar el nombre del usuario) , Lista de salas, Internet (web-calendar).

Por ejemplo, desea agregar un calendario de la Lista Global de Direcciones. Busque el nombre del calendario que desea agregar a Outlook y haga clic en Aceptar, El calendario compartido debe aparecer en Mis calendarios en la sección Calendarios compartidos .

¿Cómo quitar y restablecer los permisos del calendario a través de PowerShell?

  1. Para eliminar el permiso, utilice el cmdlet Remove-MailboxFolderPermission:

    Remover-MailboxFolderPermission -Identidad user1@domain.com:calendario - usuario user2@domain.com
  2. Si desea restablecer los permisos de calendario del usuario a los predeterminados, ejecute:

    Get-MailboxFolderPermission brett.jackson:Calendar | % { Remove-MailboxFolderPermission -Identity $_.Identity -User $_.User }
  3. Para excluir algunas entradas de permisos “predeterminados” del guión de eliminación, utilice la siguiente línea de PowerShell:

    Get-MailboxFolderPermission brett.jackson:Calendar | ? {$_.User -notmatch "^(Default|Secretary|Anonymous)$"} | % { Remove-MailboxFolderPermission -Identidad $_.Identidad -Usuario $_.Usuario.ADRecipiente.ExchangeObjectId.Guid -Confirm:$false }
  4. Ahora puedes desconectar tu sesión de PowerShell de Office 365/Exchange:

    Remover-PSSession $Session

Guión alternativo

Vea también este script de PowerShell en la Galería de TechNet para configurar los permisos de calendario en Office 365: Configurar permiso de calendario en Office 365 Exchange Online .

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.