Administrar usuarios y grupos de SharePoint Online con PowerShell de Office 365

 

**Última modificación del tema:**2016-08-09

Resumen: use PowerShell de Office 365 para administrar usuarios, grupos y sitios de SharePoint Online.

Si es un administrador de SharePoint Online que trabaja con grandes listas de grupos o cuentas de usuario y quiere un método más fácil para administrarlos, puede usar PowerShell de Office 365.

Antes de empezar

Antes de empezar a usar PowerShell de Office 365 para administrar SharePoint Online, asegúrese de instalar el Shell de administración de SharePoint Online y los requisitos previos, y de conectarse a SharePoint Online.

Para instalar el Shell de administración de SharePoint Online, descargue y ejecute el Shell de administración de SharePoint Online. Deberá realizar este procedimiento una sola vez en cada equipo.

Para abrir el símbolo del sistema del Shell de administración de SharePoint Online, desde la pantalla de inicio, escriba sharepoint y después haga clic en Shell de administración de SharePoint Online.

Para conectarse a SharePoint Online, rellene los valores para las variables $adminUPN y $orgName (reemplace todo el texto entre las comillas, incluyendo los caracteres < y >) y después ejecute los comandos siguientes en el símbolo del sistema del Shell de administración de SharePoint Online:

$adminUPN="<the full email address of an Office 365 administrator account, example: jdoe@contosotoycompany.onmicrosoft.com>"
$orgName="<name of your Office 365 organization, example: contosotoycompany>"
$userCredential = Get-Credential -UserName $adminUPN -Message "Type the password."
Connect-SPOService -Url https://$orgName-admin.sharepoint.com -Credential $userCredential

Cuando se abra el cuadro de diálogo Solicitud de credenciales de Windows PowerShell, escriba la contraseña de la cuenta de administrador de Office 365.

Ya está listo para comenzar a ejecutar comandos de SharePoint Online.

Obtener una lista de sitios, grupos y usuarios

Antes de empezar a administrar usuarios y grupos, hay que conseguir las listas de los sitios, grupos y usuarios. Después puede usar esta información para trabajar con el ejemplo de este artículo.

Conseguir una lista de sitios

Obtenga la lista de los sitios de su inquilino con este comando:

Get-SPOSite

Conseguir una lista de grupos

Obtenga la lista de los grupos de su inquilino con este comando:

Get-SPOSite | ForEach-Object {Get-SPOSiteGroup -Site $_.Url} |Format-Table

Conseguir una lista de usuarios

Obtenga la lista de los usuarios de su inquilino con este comando:

Get-SPOSite | ForEach-Object {Get-SPOUser -Site $_.Url}

Agregar un usuario al grupo Administradores de la colección de sitios

Para agregar un usuario a la lista de Administradores de la colección de sitios en una colección de sitios, hay que usar el comando Set-SPOUser. Este es el aspecto de la sintaxis:

$tenant = "<tenant>"
# This is the Tenant Name. Value must be enclosed in double quotation marks. Example: \\"Contoso01\\"

$site = "<site>"
# This is the Site name. Value must be enclosed in double quotation marks. Example: \\"contosotest\\"

$user = "<loginname>"
# This is the users login name. Value must be enclosed in double quotation marks. Example \\"opalc\\"

Set-SPOUser -Site https://$tenant.sharepoint.com/sites/$site -LoginName $user@$tenant.onmicrosoft.com -IsSiteCollectionAdmin $true

En este ejemplo también se usan variables para almacenar valores y notas en el script (por ejemplo, "# This is the Tenant Name…") para que sepa cuáles deben ser esos valores.

Por ejemplo, este conjunto de comandos agrega Opal Castillo (nombre de usuario: opalc) a la lista de Administradores de la colección de sitios en la colección de sitios ContosoTest en el arrendamiento contoso1:

$tenant = "contoso1"
$site = "contosotest"
$user = "opalc"
Set-SPOUser -Site https://$tenant.sharepoint.com/sites/$site -LoginName $user@$tenant.onmicrosoft.com -IsSiteCollectionAdmin $true

De hecho, puede cortar y pegar estos comandos en el Bloc de notas, cambiar los valores de variable de $tenant, $site y $user por valores reales del entorno y después pegarlos en la ventana del Shell de administración de SharePoint Online.

Agregar un usuario a otros grupos de administradores de la colección de sitios

En esta tarea, vamos a usar el comando Add-SPOUser para agregar un usuario a un grupo de SharePoint en una colección de sitios. Este es el aspecto de la sintaxis:

$tenant = "<tenant>"
# This is the Tenant Name. Value must be enclosed in double quotation marks. Example: \\"Contoso01\\"

$site = "<site>"
# This is the Site name. Value must be enclosed in double quotation marks. Example: \\"contosotest\\"

$user = "<loginname>"
# This is the users login name. Value must be enclosed in double quotation marks. Example: \\"opalc\\"

$group = "<group>"
# This is the SharePoint security Group name. Value must be enclosed in double quotation marks. Example: \\"Auditors\\"

Add-SPOUser -Group $group -LoginName $user@$tenant.onmicrosoft.com -Site https://$tenant.sharepoint.com/sites/$site

Por ejemplo, vamos a agregar a Glen Rife (nombre de usuario: glenr) al grupo Auditors en la colección de sitios ContosoTest en el arrendamiento contoso1:

$tenant = "contoso1"
$site = "contosotest"
$user = "glenr"
$group = "Auditors"
Add-SPOUser -Group $group -LoginName $user@$tenant.onmicrosoft.com -Site https://$tenant.sharepoint.com/sites/$site

Crear un grupo de colecciones de sitios

El comando Set-SPOSiteGroup se usa para crear un nuevo grupo de SharePoint y agregarlo a la colección de sitios de ContosoTest. Este es el aspecto de la sintaxis:

$tenant = "<tenant>"
# This is the Tenant Name. Value must be enclosed in double quotation marks, Example: \\"Contoso01\\"

$site = "<site>"
# This is the Site name. Value must be enclosed in double quotation marks, Example: \\"contosotest\\"

$group = "<group>"
# This is the SharePoint security Group name. Value must be enclosed in double quotation marks, Example: \\"Auditors\\"

$level = "<permission level>"
# This is the level of permissions to assign to the group. Value must be enclosed in double quotation marks, Example: \\"View Only\\"

New-SPOSiteGroup -Group $group -PermissionLevels $level -Site https://$tenant.sharepoint.com/sites/$site

Nota

Debe delimitar las cadenas con espacios entre comillas. Las propiedades de grupo, como los niveles de permisos, se pueden actualizar más adelante mediante el cmdlet Set-SPOSiteGroup.

Vamos a agregar, por ejemplo, el grupo Auditors con permisos de solo vista a la colección de sitios Contoso Test en el arrendamiento contoso1:

$tenant = "contoso1"
$site = "Contoso Test"
$level = "View Only"
$group = "Auditors"
New-SPOSiteGroup -Group $group -PermissionLevels $level -Site https://$tenant.sharepoint.com/sites/$site

Quitar usuarios de un grupo

A veces, es necesario quitar un usuario de un sitio o incluso de todos los sitios. Tal vez el empleado se mueva de una división a otra o abandone la compañía. Puede hacer esto fácilmente para un empleado en la interfaz de usuario, pero no es tan fácil cuando hay que mover una división completa de un sitio a otro.

Sin embargo, si usa archivos CSV y el Shell de administración de SharePoint Online, esto es rápido y fácil. En esta tarea, vamos a usar Windows PowerShell para quitar un usuario de un grupo de seguridad de la colección de sitios. A continuación, puede usar un archivo CSV y quitar muchos usuarios de distintos sitios.

Vamos a usar el comando Remove-SPOUser para quitar un solo usuario de Office 365 de un grupo de colección de sitios para que podamos ver la sintaxis del comando. Este es el aspecto de la sintaxis:

$tenant = "<tenant>"
# This is the Tenant Name. Value must be enclosed in double quotation marks, Example: \\"Contoso01\\"

$site = "<site>"
# This is the Site name. Value must be enclosed in double quotation marks, Example: \\"contosotest\\"

$group = "<group>"
# This is the SharePoint security Group name. Value must be enclosed in double quotation marks, Example: \\"Auditors\\"

$user = "<loginname>"
# This is the user's login name. Value must be enclosed in double quotation marks, Example: \\"opalc\\"

Remove-SPOUser -LoginName $user@$tenant.onmicrosoft.com -Site https://$tenant.sharepoint.com/sites/$site

Por ejemplo, vamos a quitar a Bobby Overby del grupo Auditors de la colección de sitio en la colección de sitios Contoso Test en el arrendamiento contoso1:

$tenant = "contoso1"
$site = "contosotest"
$user = "bobbyo"
$group = "Auditors"
Remove-SPOUser -LoginName $user@$tenant.onmicrosoft.com -Site https://$tenant.sharepoint.com/sites/$site -Group $group

Supongamos que quisiéramos quitar a Bobby de todos los grupos a los que pertenece. Este es el método que usaríamos para hacerlo:

$tenant = "contoso1"
$user = "bobbyo"
Get-SPOSite | ForEach-Object {Get-SPOSiteGroup -Site $_.Url} | ForEach-Object {Remove-SPOUser -LoginName $user@$tenant.onmicrosoft.com -Site &_.Url}

Advertencia

Esto es solo para mostrarle cómo hacerlo. No debe ejecutar este comando a menos que realmente tenga que quitar un usuario de cada grupo, por ejemplo, si el usuario deja la empresa.

Automatizar la administración de grandes listas de usuarios y grupos

Para agregar un gran número de cuentas a los sitios de SharePoint y otorgarles permisos, puede usar el Centro de administración de Office 365, comandos individuales de PowerShell o un archivo CSV. De estas opciones, el uso del archivo CSV es la forma más rápida de automatizar esta tarea.

El proceso básico consiste en crear un archivo CSV que tiene encabezados (columnas) que se corresponden con los parámetros que el script de Windows PowerShell necesita. Puede crear fácilmente dicha lista en Microsoft Excel 2013 y después exportarla como archivo CSV. A continuación, puede usar un script de Windows PowerShell para iterar a través de registros (filas) en el archivo CSV, agregar los usuarios a los grupos y los grupos a los sitios.

Por ejemplo, vamos a crear un archivo CSV para definir un grupo de colecciones de sitios, grupos y permisos. A continuación, vamos a crear un archivo CSV para rellenar los grupos con usuarios. Por último, vamos a crear y ejecutar un script de Windows PowerShell que cree y rellene los grupos.

El primer archivo CSV agregará uno o más grupos a una o más colecciones de sitios y tendrá esta estructura:

Encabezado:

Site,Group,PermissionLevels

Elemento:

https://<tenant>.sharepoint.com/sites/<site>,<site collection>,<group>,<level>

Este es un archivo de ejemplo:

Site,Group,PermissionLevels
https://contoso1.sharepoint.com/sites/contosotest,Contoso Project Leads,Full Control
https://contoso1.sharepoint.com/sites/contosotest,Contoso Auditors,View Only
https://contoso1.sharepoint.com/sites/contosotest,Contoso Designers,Design
https://contoso1.sharepoint.com/sites/TeamSite01,XT1000 Team Leads,Full Control
https://contoso1.sharepoint.com/sites/TeamSite01,XT1000 Advisors,Edit
https://contoso1.sharepoint.com/sites/Blog01,Contoso Blog Designers,Design
https://contoso1.sharepoint.com/sites/Blog01,Contoso Blog Editors,Edit
https://contoso1.sharepoint.com/sites/Project01,Project Alpha Approvers,Full Control

El segundo archivo CSV agregará uno o varios usuarios a uno o varios grupos y tendrá esta estructura:

Encabezado:

Group,LoginName,Site

Elemento:

<group>,<login>,https://<tenant>.sharepoint.com/sites/<site>

Este es un archivo de ejemplo:

Group,LoginName,Site
Contoso Project Leads,bobbyo@contoso1.onmicrosoft.com,https://contoso1.sharepoint.com/sites/contosotest
Contoso Auditors,allieb@contoso1.onmicrosoft.com,https://contoso1.sharepoint.com/sites/contosotest
Contoso Designers,bonniek@contoso1.onmicrosoft.com,https://contoso1.sharepoint.com/sites/contosotest
XT1000 Team Leads,dorenap@contoso1.onmicrosoft.com,https://contoso1.sharepoint.com/sites/TeamSite01
XT1000 Advisors,garthf@contoso1.onmicrosoft.com,https://contoso1.sharepoint.com/sites/TeamSite01
Contoso Blog Designers,janets@contoso1.onmicrosoft.com,https://contoso1.sharepoint.com/sites/Blog01
Contoso Blog Editors,opalc@contoso1.onmicrosoft.com,https://contoso1.sharepoint.com/sites/Blog01
Project Alpha Approvers,robinc@contoso1.onmicrosoft.com,https://contoso1.sharepoint.com/sites/Project01

En el paso siguiente, debe tener los dos archivos CSV guardados en la unidad. Estos son los comandos que usan los dos archivos CSV para agregar permisos y la pertenencia al grupo:

Import-Csv C:\O365Admin\GroupsAndPermissions.csv | ForEach-Object {New-SPOSiteGroup -Group $_.Group -PermissionLevels $_.PermissionLevels -Site $_.Site}
Import-Csv C:\O365Admin\Users.csv | ForEach-Object {Add-SPOUser -Group $_.Group -LoginName $_.LoginName -Site $_.Site}

El script importa el contenido del archivo CSV y usa los valores de las columnas (en negrita) para llenar los parámetros de los comandos New-SPOSiteGroup y Add-SPOUser. En nuestro ejemplo, lo guardamos en la unidad C, pero puede guardarlo donde quiera.

Ahora, vamos a quitar unas cuantas personas de varios grupos en distintos sitios usando el mismo archivo CSV. Este es el comando:

Import-Csv C:\O365Admin\Users.csv | ForEach-Object {Remove-SPOUser -LoginName $_.LoginName -Site $_.Site -Group $_.Group}

Generar informes de usuario

Tal vez desee obtener un informe sencillo para unos cuantos sitios y mostrar los usuarios de dichos sitios, su nivel de permisos y otras propiedades. Este es el aspecto de la sintaxis:

$tenant = "<tenant>"
# This is the Tenant Name. Value must be enclosed in double quotes, Example: \\"Contoso01\\"

$site = "<site>"
# This is the Site name. Value must be enclosed in double quotes, Example: \\"contosotest\\"

Get-SPOUser -Site https://$tenant.sharepoint.com/sites/$site | select * | Format-table -Wrap -AutoSize | Out-File c\UsersReport.txt -Force -Width 360 -Append

Esto tomará los datos de estos tres sitios y los escribirá en un archivo de texto de la unidad local. Tenga en cuenta que el parámetro –Append agregará nuevo contenido a un archivo existente.

Por ejemplo, vamos a ejecutar un informe en los sitios ContosoTest, TeamSite01 y Project01 para el inquilino Contoso1:

$tenant = "contoso1"
$site = "contosotest"

Get-SPOUser -Site https://$tenant.sharepoint.com/sites/$site | Format-Table -Wrap -AutoSize | Out-File c:\UsersReport.txt -Force -Width 360 -Append

$site = "TeamSite01"

Get-SPOUser -Site https://$tenant.sharepoint.com/sites/$site |Format-Table -Wrap -AutoSize | Out-File c:\UsersReport.txt -Force -Width 360 -Append

$site = "Project01"

Get-SPOUser -Site https://$tenant.sharepoint.com/sites/$site | Format-Table -Wrap -AutoSize | Out-File c:\UsersReport.txt -Force -Width 360 -Append

Observe que solo tuvimos que cambiar la variable $site. La variable $tenant mantiene su valor en las tres ejecuciones del comando.

Sin embargo, ¿qué pasa si quisiera hacer esto para cada sitio? Puede hacerlo sin tener que escribir todos los sitios web con este comando:

Get-SPOSite | ForEach-Object {Get-SPOUser -Site $_.Url} | Format-Table -Wrap -AutoSize | Out-File c:\UsersReport.txt -Force -Width 360 -Append

Este informe es bastante sencillo y podemos agregar más código para crear informes más específicos o que incluyan información más detallada. Pero con esto podemos hacernos una idea de cómo usar el Shell de administración de SharePoint Online para administrar usuarios en el entorno de SharePoint Online.

Vea también

Administrar Office 365 con PowerShell de Office 365
Introducción a PowerShell de Office 365
Administrar licencias y cuentas de usuario con PowerShell de Office 365
Usar Windows PowerShell para crear informes en Office 365