Usar una secuencia de comandos para agregar usuarios a una suspensión en el caso de exhibición de documentos electrónicos en el centro de cumplimiento y la seguridad de Office 365

Importante:  Este artículo se ha traducido con traducción automática; vea la declinación de responsabilidades. Para su referencia, puede encontrar la versión en inglés de este artículo aquí.

El Centro de cumplimiento y seguridad de Office 365 proporciona una gran cantidad de cmdlets de Windows PowerShell que le permiten automatizar tareas que lleva mucho tiempo relacionados con la creación y administración de casos de exhibición de documentos electrónicos. Actualmente, con la herramienta de caso de exhibición de documentos electrónicos en la Centro de cumplimiento y seguridad para colocar una gran cantidad de contenido custodio mantenga ubicaciones en toma tiempo y preparación. Por ejemplo, antes de crear una suspensión, debe recopilar la dirección URL para cada sitio de OneDrive para la Empresa que desea colocar en espera. A continuación, para cada usuario que desee colocar en espera, debe agregar su buzón de correo y su sitio de OneDrive para la Empresa a la suspensión. En futuras versiones de la Centro de cumplimiento y seguridad, esto se proporciona más fácil de hacer. Hasta entonces, puede usar la secuencia de comandos para automatizar este proceso en este artículo.

Mantenga de una lista de direcciones de correo electrónico de los usuarios que desea colocar las indicaciones script para el nombre del dominio de Mi sitio de su organización (por ejemplo, contoso en la dirección URL de https://contoso-my.sharepoint.com), el nombre de un caso de exhibición de documentos electrónicos existente, el nombre del nuevo mantenga que asociado con el caso, y una consulta de búsqueda para usar si desea crear una consulta basada. La secuencia de comandos, a continuación, obtiene la dirección URL para el sitio de OneDrive para la Empresa para cada usuario de la lista, crea el nueva espera y, a continuación, agrega el buzón de correo y OneDrive para la Empresa sitio para cada usuario en la lista a la suspensión. La secuencia de comandos también genera archivos de registro que contienen información sobre la nueva suspensión.

Estos son los pasos para que esto suceda:

Paso 1: Instalar el Shell de administración de SharePoint

Paso 2: Generar una lista de usuarios

Paso 3: Ejecutar la secuencia de comandos para crear una suspensión y agregar los usuarios

Antes de comenzar

  • Debe ser miembro del grupo de roles de administrador de exhibición de documentos electrónicos en la Centro de cumplimiento y seguridad y un administrador global de SharePoint Online para ejecutar el script en el paso 3. Para obtener más información, vea asignar permisos de exhibición de documentos electrónicos en el centro de cumplimiento y la seguridad de Office 365.

  • Un máximo de 1.000 buzones y 100 sitios puede agregarse a una espera que está asociada a un caso de exhibición de documentos electrónicos en la Centro de cumplimiento y seguridad. Suponiendo que todos los usuarios que desea colocar en espera tendrán un sitio de OneDrive para la Empresa, puede agregar un máximo de 100 usuarios a una espera con la secuencia de comandos de este artículo.

  • Asegúrese de guardar la lista de usuarios que cree en el paso 2 y la secuencia de comandos en el paso 3 en la misma carpeta. Que le será más fácil ejecutar la secuencia de comandos.

  • La secuencia de comandos agrega la lista de usuarios a una nueva suspensión que esté asociada a un caso existente. Asegúrese de crea el caso al que desee asociar la suspensión con antes de ejecutar la secuencia de comandos.

  • La secuencia de comandos incluye un mínimo de errores. Su finalidad principal es rápida y fácilmente colocar el buzón de correo y mantenga OneDrive para la empresa de cada usuario.

  • Los scripts de ejemplo que aparecen en este tema no son soportados por ningún programa o servicio de soporte técnico de Microsoft. Los scripts de ejemplo aparecen "TAL CUAL", sin garantía de ningún tipo. Además, Microsoft no se hace responsable de cualquier garantía implícita, incluyendo, de manera enunciativa pero no limitativa, cualquier garantía implícita de comercialización o de calidad para cualquier propósito. Cualquier riesgo resultante del uso o resultado de los scripts y la documentación de ejemplo será únicamente responsabilidad suya. En ningún caso Microsoft, sus autores o cualquier persona involucrada en su creación, producción o entrega de los scripts será responsable de cualquier daño (incluidos, de manera enunciativa pero no limitativa, daños por pérdidas de beneficios de una empresa, interrupción de la actividad de una empresa, pérdidas de información de una empresa, o cualquier otro daño pecuniario), incluso si Microsoft supiera de la posibilidad de tales daños.

Volver al principio

Paso 1: Instalar el Shell de administración de SharePoint Online

El primer paso es instalar el Shell de administración de SharePoint Online si aún no está instalada en el equipo local. No es necesario que use el shell de este procedimiento, pero debe instalarlo porque contiene los requisitos previos necesarios para que la secuencia de comandos que se ejecutan en el paso 3. Estos requisitos previos permiten la secuencia de comandos para comunicarse con SharePoint Online para obtener las direcciones URL para los sitios de OneDrive para la Empresa.

Vaya a Configurar el entorno de SharePoint Online administración Shell de Windows PowerShell y realizar el paso 1 y 2 de paso para instalar el Shell de administración de SharePoint Online en el equipo local.

Volver al principio

Paso 2: Generar una lista de usuarios

La secuencia de comandos en el paso 3 creará una suspensión que está asociada a un caso de exhibición de documentos electrónicos y agregar los buzones y OneDrive para la Empresa sitios de una lista de usuarios a la suspensión. Solo puede escribir las direcciones de correo electrónico en un archivo de texto, o puede ejecutar un comando en Windows PowerShell para obtener una lista de direcciones de correo electrónico y guardarlos en un archivo (que se encuentra en la misma carpeta que va a guardar la secuencia de comandos en el paso 3).

Aquí es un comando de PowerShell (que se ejecutan con PowerShell remoto conectado a su organización Exchange Online ) obtener una lista de direcciones de correo electrónico para todos los usuarios de su organización y guardar un archivo de texto denominado HoldUsers.txt.

Get-Mailbox -ResultSize unlimited -Filter { RecipientTypeDetails -eq 'UserMailbox'} | Select-Object PrimarySmtpAddress > HoldUsers.txt

Después de ejecutar este comando, abra el archivo de texto y quitar el encabezado que contiene el nombre de propiedad, PrimarySmtpAddress. A continuación, quite todas las direcciones de correo electrónico, excepto los de los usuarios que desea agregar a la suspensión que creará en el paso 3. Asegúrese de que no hay ninguna fila en blanco antes o después de la lista de direcciones de correo electrónico.

Volver al principio

Paso 3: Ejecutar la secuencia de comandos para crear una suspensión y agregar los usuarios

Cuando se ejecuta la secuencia de comandos en este paso, le pedirá la siguiente información. Asegúrese de que tiene esta información preparada antes de ejecutar la secuencia de comandos.

  • Las credenciales de usuario    La secuencia de comandos utilizará sus credenciales para conectarse a la Centro de cumplimiento y seguridad con PowerShell remoto. También usará estas credenciales para tener acceso a SharePoint Online para obtener las direcciones URL de OneDrive para la Empresa para la lista de usuarios.

  • Nombre de su dominio de Mi sitio    El dominio de Mi sitio es el dominio que contiene todos los sitios de OneDrive para la Empresa de su organización. Por ejemplo, si la dirección URL de su dominio de Mi sitio es https://contoso-my.sharepoint.com, debe escribir contoso cuando la secuencia de comandos solicita el nombre de su dominio de Mi sitio.

  • Nombre de la caja    El nombre de un caso existente. La secuencia de comandos creará una nueva suspensión que esté asociada a este caso.

  • Nombre de la suspensión    El nombre de la suspensión el script cree y asociar el caso especificado.

  • Mantenga presionada la consulta de búsqueda para basado en una consulta    Puede crear una suspensión de consulta para que solo el contenido que cumple los criterios de búsqueda especificado se coloca en espera. Para poner todo el contenido en espera, simplemente, presione ENTRAR cuando se le solicite para una consulta de búsqueda.

  • Si no se activa la suspensión    Puede hacer que la secuencia de comandos activar la suspensión después de crearlo o puede hacer que la secuencia de comandos cree la suspensión sin habilitarlo. Si no tiene la secuencia de comandos activar la suspensión, puedes activarlo de más adelante en el Centro de cumplimiento y seguridad o ejecutando los siguientes comandos de PowerShell:

    Set-CaseHoldPolicy -Identity <name of the hold> -Enabled $true
    Set-CaseHoldRule -Identity <name of the hold> -Disabled $false
  • Nombre del archivo de texto con la lista de usuarios    El nombre del archivo de texto en el paso 2 que contiene la lista de usuarios para agregar a la suspensión. Si este archivo se encuentra en la misma carpeta que la secuencia de comandos, escriba el nombre del archivo (por ejemplo, HoldUsers.txt). Si el archivo de texto está en otra carpeta, escriba la ruta completa del archivo.

Una vez recopilada la información de la secuencia de comandos le pedirá, el paso final es ejecutar la secuencia de comandos para crear el nueva espera y agregar usuarios a ella.

  1. Guardar el texto siguiente en un archivo de script de Windows PowerShell mediante un sufijo nombre de archivo. ps1; Por ejemplo, AddUsersToHold.ps1.

    #script begin
    " " 
    write-host "***********************************************"
    write-host "   Office 365 Security & Compliance Center   " -foregroundColor yellow -backgroundcolor darkgreen
    write-host "   eDiscovery cases - Add users to a hold   " -foregroundColor yellow -backgroundcolor darkgreen 
    write-host "***********************************************"
    " " 
    # Get user credentials & Connect to Office 365 SCC, SPO
    
    $credentials = Get-Credential -Message "Specify your credentials to connect to the Office 365 Security & Compliance Center and SharePoint Online"
    $s = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri "https://ps.compliance.protection.outlook.com/powershell-liveid" -Credential $credentials -Authentication Basic -AllowRedirection -SessionOption (New-PSSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheck)
    $a = Import-PSSession $s -AllowClobber
    
        if (!$s)
        {
            Write-Error "Couldn't create PowerShell session."
            return;
        }
    
    # Load the SharePoint assemblies from the SharePoint Online Management Shell
    # To install, go to http://go.microsoft.com/fwlink/p/?LinkId=255251
    if (!$SharePointClient -or !$SPRuntime -or !$SPUserProfile)
    {
        $SharePointClient = [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client")
        $SPRuntime = [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client.Runtime")
        $SPUserProfile = [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client.UserProfiles")
    
        if (!$SharePointClient)
        {
            Write-Error "The SharePoint Online Management Shell isn't installed. Please install it from: http://go.microsoft.com/fwlink/p/?LinkId=255251 and then re-run this script."
            return;
        }
    }
    
    if (!$spCreds)
    {
        $spCreds = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($credentials.UserName, $credentials.Password)
    }
    
    # Get the user's MySite domain name. We use this to create the admin URL and root URL for OneDrive for Business
    ""
    $mySiteDomain = Read-Host "Enter the name of your organization's MySite domain. For example, 'contoso' for 'https://contoso-my.sharepoint.com'"
    ""
    
    # Get other required information
    do{
    $casename = Read-Host "Enter the name of the case"
    $caseexists = (get-compliancecase -identity "$casename" -erroraction SilentlyContinue).isvalid
    if($caseexists -ne 'True')
    {""
    write-host "A case named '$casename' doesn't exist. Please specify the name of an existing case, or create a new case and then re-run the script." -foregroundColor Yellow
    ""}
    }While($caseexists -ne 'True')
    
    ""
    do{
    $holdName = Read-Host "Enter the name of the new hold"
    $holdexists=(get-caseholdpolicy -identity "$holdname" -case "$casename" -erroraction SilentlyContinue).isvalid
    if($holdexists -eq 'True')
    {""
    write-host "A hold named '$holdname' already exists. Please specify a new hold name." -foregroundColor Yellow
    ""}
    }While($holdexists -eq 'True')
    
    ""
    $holdQuery = Read-Host "Enter a search query to create a query-based hold, or press Enter to hold all content"
    ""
    $holdstatus = read-host "Do you want the hold enabled after it's created? (Yes/No)"
    
    do{
    ""
    $inputfile = read-host "Enter the name of the text file that contains the email addresses of the users to add to the hold"
    ""
    $fileexists = test-path -path $inputfile
    if($fileexists -ne 'True'){write-host "$inputfile doesn't exist. Please enter a valid file name." -foregroundcolor Yellow}
    }while($fileexists -ne 'True')
    
    #Import the list of addresses from the txt file.  Trim any excess spaces and make sure all addresses 
        #in the list are unique.
    	[array]$emailAddresses = Get-Content $inputfile -ErrorAction SilentlyContinue | where {$_.trim() -ne ""}  | foreach{ $_.Trim() }
    	[int]$dupl = $emailAddresses.count
    	[array]$emailAddresses = $emailAddresses | select-object -unique
    	$dupl -= $emailAddresses.count
    
    #Validate email addresses so the hold creation does not run in to an error.
    if($emailaddresses.count -gt 0){
    write-host ($emailAddresses).count "addresses were found in the text file. There were $dupl duplicate entries in the file." -foregroundColor Yellow
    ""
    Write-host "Validating the email addresses. Please wait..." -foregroundColor Yellow
    ""
    $finallist =@()
    foreach($emailAddress in $emailAddresses)
    {
    if((get-recipient $emailaddress -erroraction SilentlyContinue).isvalid -eq 'True')
    {$finallist += $emailaddress}
    else {"Unable to find the user $emailaddress"
    [array]$excludedlist += $emailaddress}
    }
    ""
    #find user's OneDrive Site URL using email address
    Write-Host "Getting the URL for each user's OneDrive for Business site." -foregroundColor Yellow
    ""
    $AdminUrl = "https://$mySiteDomain-admin.sharepoint.com"
    $mySiteUrlRoot = "https://$mySiteDomain-my.sharepoint.com"
    
    # Add the path of the User Profile Service to the SPO admin URL, then create a new webservice proxy to access it
    $proxyaddr = "$AdminUrl/_vti_bin/UserProfileService.asmx?wsdl"
    $UserProfileService= New-WebServiceProxy -Uri $proxyaddr -UseDefaultCredential False
    $UserProfileService.Credentials = $credentials
    
    # Take care of auth cookies
    $strAuthCookie = $spCreds.GetAuthenticationCookie($AdminUrl)
    $uri = New-Object System.Uri($AdminUrl)
    $container = New-Object System.Net.CookieContainer
    $container.SetCookies($uri, $strAuthCookie)
    $UserProfileService.CookieContainer = $container
    $urls = @()
    foreach($emailAddress in $emailAddresses)
    {
          try{
            $prop = $UserProfileService.GetUserProfileByName("i:0#.f|membership|$emailAddress") | Where-Object { $_.Name -eq "PersonalSpace" }
            $url = $prop.values[0].value
    		if($url -ne $null){
            $furl = $mySiteUrlRoot + $url
            $urls += $furl
            Write-Host "- $emailAddress => $furl"
    		[array]$ODadded += $furl}
    	else{    
            Write-Warning "Couldn't locate OneDrive for $emailAddress"
    		[array]$ODExluded += $emailAddress
        }}
    	catch { 
    	Write-Warning "Could not locate OneDrive for $emailAddress"
    	[array]$ODExluded += $emailAddress
    	Continue }
    }
    
    if(($finallist.count -gt 0) -or ($urls.count -gt 0)){
    ""
    Write-Host "Creating the hold named $holdname. Please wait..." -foregroundColor Yellow
    if(($holdstatus -eq "Y") -or ($holdstatus -eq  "y") -or ($holdstatus -eq "yes") -or ($holdstatus -eq "YES")){
    New-CaseHoldPolicy -Name "$holdName" -Case "$casename" -ExchangeLocation $finallist -SharePointLocation $urls -Enabled $True | out-null
    New-CaseHoldRule -Name "$holdName" -Policy "$holdname" -ContentMatchQuery $holdQuery | out-null
    }
    else{
    New-CaseHoldPolicy -Name "$holdName" -Case "$casename" -ExchangeLocation $finallist -SharePointLocation $urls -Enabled $false | out-null
    New-CaseHoldRule -Name "$holdName" -Policy "$holdname" -ContentMatchQuery $holdQuery -disabled $true | out-null
    }
    ""
    }
    else {"No valid locations were identified. Therefore, the hold wasn't created."}
    
    #write log files (if needed)
    $newhold=Get-CaseHoldPolicy -Identity "$holdname" -Case "$casename" -erroraction SilentlyContinue
    $newholdrule=Get-CaseHoldRule -Identity "$holdName" -erroraction SilentlyContinue
    if(($ODAdded.count -gt 0) -or ($ODExluded.count -gt 0) -or ($finallist.count -gt 0) -or ($excludedlist.count -gt 0) -or ($newhold.isvalid -eq 'True') -or ($newholdrule.isvalid -eq 'True'))
    {
    Write-Host "Generating output files..." -foregroundColor Yellow
    if($ODAdded.count -gt 0){
    "OneDrive Locations" | add-content .\LocationsOnHold.txt
    "==================" | add-content .\LocationsOnHold.txt 
    $newhold.SharePointLocation.name | add-content .\LocationsOnHold.txt}
    if($ODExluded.count -gt 0){ 
    "Users without OneDrive locations" | add-content .\LocationsNotOnHold.txt
    "================================" | add-content .\LocationsNotOnHold.txt
    $ODExluded | add-content .\LocationsNotOnHold.txt}
    if($finallist.count -gt 0){
    " " | add-content .\LocationsOnHold.txt
    "Exchange Locations" | add-content .\LocationsOnHold.txt
    "==================" | add-content .\LocationsOnHold.txt 
    $newhold.ExchangeLocation.name | add-content .\LocationsOnHold.txt}
    if($excludedlist.count -gt 0){
    " "| add-content .\LocationsNotOnHold.txt
    "Mailboxes not added to the hold" | add-content .\LocationsNotOnHold.txt
    "===============================" | add-content .\LocationsNotOnHold.txt
    $excludedlist | add-content .\LocationsNotOnHold.txt}
    $FormatEnumerationLimit=-1
    if($newhold.isvalid -eq 'True'){$newhold|fl >.\GetCaseHoldPolicy.txt}
    if($newholdrule.isvalid -eq 'True'){$newholdrule|Fl >.\GetCaseHoldRule.txt}
    }
    }
    
    else {"The hold wasn't created because no valid entries were found in the text file."}
    ""
    Write-host "Script complete!" -foregroundColor Yellow
    ""
    #script end
  2. En el equipo local, abra Windows PowerShell y vaya a la carpeta donde guardó la secuencia de comandos.

  3. Ejecutar la secuencia de comandos; Por ejemplo:

    .\AddUsersToHold.ps1
  4. Escriba la información que se le pedirá la secuencia de comandos.

    La secuencia de comandos Centro de cumplimiento y seguridad con PowerShell remoto, que se conecta y crea la nueva demora en el caso de exhibición de documentos electrónicos y suma los buzones y OneDrive para la Empresa para los usuarios de la lista. Puede ir a la caja en la página de exhibición de documentos electrónicos en la Centro de cumplimiento y seguridad para ver la nueva suspensión.

Una vez finalizada la secuencia de comandos en ejecución, crea los siguientes archivos de registro y guarda en la carpeta donde se encuentra la secuencia de comandos.

  • LocationsOnHold.txt    Contiene una lista de buzones de correo y los sitios de OneDrive para la Empresa que contienen la secuencia de comandos correctamente.

  • LocationsNotOnHold.txt    Contiene una lista de buzones de correo y los sitios de OneDrive para la Empresa que no se realizó la secuencia de comandos en espera. Si un usuario tiene un buzón de correo, pero no en un sitio de OneDrive para la Empresa, el usuario se incluirá en la lista de sitios de OneDrive para la Empresa que no se han colocado en suspensión.

  • GetCaseHoldPolicy.txt    Contiene el resultado del cmdlet Get-CaseHoldPolicy para la nueva suspensión, que se ha encontrado la secuencia de comandos después de crear la nueva suspensión. La información devuelta por este cmdlet incluye una lista de los usuarios cuyos buzones y sitios OneDrive para la Empresa se han colocado en espera y si está habilitada o deshabilitada la suspensión.

  • GetCaseHoldRule.txt    Contiene el resultado del cmdlet Get-CaseHoldRule para la nueva suspensión, que se ha encontrado la secuencia de comandos después de crear la nueva suspensión. La información devuelta por este cmdlet incluye la consulta de búsqueda si utiliza la secuencia de comandos para crear una suspensión de consulta.

Volver al principio

Nota: Declinación de responsabilidades de traducción automática: Este artículo se ha traducido con un sistema informático sin intervención humana. Microsoft ofrece estas traducciones automáticas para que los hablantes de otros idiomas distintos del inglés puedan disfrutar del contenido sobre los productos, los servicios y las tecnologías de Microsoft. Puesto que este artículo se ha traducido con traducción automática, es posible que contenga errores de vocabulario, sintaxis o gramática.

Ampliar sus conocimientos
Explorar los cursos
Obtener nuevas características primero
Únase a los participantes de Office Insider

¿Le ha sido útil esta información?

¡Gracias por sus comentarios!

Gracias por sus comentarios. Quizá le interese ponerse en contacto con uno de nuestros agentes de soporte de Office.

×