Ir al contenido principal

Evita ingresar tus credenciales repetidamente con el explorador y los métodos de conexión modernos

Conéctate una vez en una ventana del explorador al iniciar tu script de PowerShell, y así PowerShell reutilizará esa conexión en cada conexión posterior del bucle

Nota: La integración de PowerShell requiere una suscripción Pro o Enterprise de ShareGate Migrate. No está disponible en el plan Essentials.

Para evitar ingresar tus credenciales en cada conexión dentro de una instrucción de bucle foreach con Browser authentication y Modern authentication, puedes usar el parámetro de PowerShell -UseCredentialsFrom para crear una única conexión y reutilizar las credenciales de esa conexión en tu script.

-UseCredentialsFrom

Para ilustrar cómo funciona -UseCredentialsFrom, aquí tienes un script de conexión básico:

# Connect to the first SharePoint site using browser authentication and store the connection

$connection = Connect-Site -Url "http://mytenant/sites/mysitecollection1" -ModernAuth

# Use the stored credentials to connect to the second SharePoint site

Connect-Site -Url "http://mytenant/sites/mysitecollection2" -UseCredentialsFrom $connection

# Use the same stored credentials to connect to the third SharePoint site

Connect-Site -Url "http://mytenant/sites/mysitecollection3" -UseCredentialsFrom $connection

Cuando ejecutas este script, se abrirá una ventana del navegador para que te conectes a mysitecollection1. Una vez establecida la conexión, el script usará automáticamente esa primera conexión para conectarse a mysitecollection2 y mysitecollection3.

Cómo usar -UseCredentialsFrom con un bucle foreach

Una instrucción de bucle foreach normalmente usa llaves para repetir los comandos de conexión y copia en cada fila de un archivo CSV con la aplicación. Aquí tienes un ejemplo:

# Import the Sharegate module
Import-Module ShareGate

# Define the path to the CSV file containing site information
$csvFile = "C:\CSV\CopySites.csv"

# Import the CSV file into a table using a comma as the delimiter
$table = Import-Csv $csvFile -Delimiter ","

# Define source site credentials
$srcUsername = "sourceusername"
$srcPassword = ConvertTo-SecureString 'sourcepassword' -AsPlainText -Force

# Connect to the destination site using browser authentication and store the connection
$dstsiteConnection = Connect-Site -Url "https://tenantname.sharepoint.com/sites/sitename" -Browser

# Declare variables for source and destination sites
Set-Variable -Name srcSite
Set-Variable -Name dstSite

# Loop through each row in the CSV table and copy sites from source to destination
foreach ($row in $table) {

# Clear any existing variable values for source and destination sites
Clear-Variable -Name srcSite
Clear-Variable -Name dstSite

# Connect to the source site using credentials
$srcSite = Connect-Site -Url $row.SourceSite -Username $srcUsername -Password $srcPassword

# Connect to the destination site using the stored credentials from the browser connection
$dstSite = Connect-Site -Url $row.DestinationSite -UseCredentialsFrom $dstsiteConnection

# Copy the source site to the destination site with merging and subsites included
Copy-Site -Site $srcSite -DestinationSite $dstSite -Merge -Subsites
}

Cuando ejecutas este script, se te solicita que ingreses tus credenciales en una ventana del navegador antes de la instrucción foreach.

La conexión se almacena en la variable $dstsiteConnection, que se reutiliza en cada iteración de -UseCredentialsFrom $dstsiteConnection dentro del bucle.

Esto garantiza que no necesites volver a ingresar tus credenciales para cada sitio que se copie.

Nota: Evita usar cualquiera de las URL que aparecen en tu CSV para la variable $dstsiteConnection. Si usas una de las URL de tu lista, el comando Clear-Variable borrará tus credenciales.

Reutiliza una conexión guardada entre sesiones

El parámetro -UseCredentialsFrom reutiliza una conexión dentro del mismo script. Para reutilizar una conexión entre sesiones distintas, guárdala en Connection manager con -SaveConnection cuando te conectes, y luego recupérala más adelante con Get-SharePointConnection y pásala a Connect-Site o Connect-Tenant usando -UseConnection.

$connection = Get-SharePointConnection -Id 01c0ebab-a17e-4ae3-9caf-ba09f05f2970
Connect-Site -Url "http://mytenantdomain/sites/mysitecollection" -UseConnection $connection

Para más detalles, consulta Get-SharePointConnection.

Este artículo fue traducido con inteligencia artificial. En caso de duda, consulta la versión original en inglés.

¿Ha quedado contestada tu pregunta?