Ir al contenido principal

Evita ingresar tus credenciales repetidamente con los métodos de conexión mediante navegador y autenticación moderna

Conéctate una vez en una ventana del navegador al iniciar tu Script de PowerShell, y luego PowerShell reutiliza esa Conexión en cada ciclo.

Nota: La integración con 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 foreach loop con autenticación de navegador y autenticación moderna, puedes usar el parámetro de PowerShell -UseCredentialsFrom para crear una sola conexión y reutilizar las credenciales de esa conexión en tu script.

-UseCredentialsFrom

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

# Conéctate al primer sitio de SharePoint usando autenticación de navegador y guarda la conexión

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

# Usa las credenciales guardadas para conectarte al segundo sitio de SharePoint

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

# Usa las mismas credenciales guardadas para conectarte al tercer sitio de SharePoint

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

Cuando ejecutes este script, se abrirá una ventana del navegador para que puedas conectarte 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 foreach loop

Una instrucción foreach loop normalmente utiliza llaves para repetir comandos de conexión y copia por cada fila de un archivo CSV con la app. Aquí tienes un ejemplo:

# Importa el módulo de ShareGate
Import-Module ShareGate

# Define la ruta al archivo CSV que contiene la información de los sitios
$csvFile = "C:\CSV\CopySites.csv"

# Importa el archivo CSV en una tabla usando la coma como delimitador
$table = Import-Csv $csvFile -Delimiter ","

# Define las credenciales del sitio de origen
$srcUsername = "sourceusername"
$srcPassword = ConvertTo-SecureString 'sourcepassword' -AsPlainText -Force

# Conéctate al sitio de destino usando autenticación de navegador y guarda la conexión
$dstsiteConnection = Connect-Site -Url "https://tenantname.sharepoint.com/sites/sitename" -Browser

# Declara variables para los sitios de origen y destino
Set-Variable -Name srcSite
Set-Variable -Name dstSite

# Recorre cada fila en la tabla CSV y copia los sitios del origen al destino
foreach ($row in $table) {

# Limpia cualquier valor existente de las variables de origen y destino
Clear-Variable -Name srcSite
Clear-Variable -Name dstSite

# Conéctate al sitio de origen usando credenciales
$srcSite = Connect-Site -Url $row.SourceSite -Username $srcUsername -Password $srcPassword

# Conéctate al sitio de destino usando las credenciales guardadas de la conexión de navegador
$dstSite = Connect-Site -Url $row.DestinationSite -UseCredentialsFrom $dstsiteConnection

# Copia el sitio de origen al sitio de destino con fusión e inclusión de subsitios
Copy-Site -Site $srcSite -DestinationSite $dstSite -Merge -Subsites
}

Cuando ejecutes este script, se te pedirá ingresar tus credenciales en una ventana del navegador antes de la instrucción foreach.

La conexión se guarda en la variable $dstsiteConnection, que se reutiliza en cada pasada de -UseCredentialsFrom $dstsiteConnection dentro del loop.

Esto asegura que no tengas que volver a ingresar tus credenciales para cada sitio que se copia.

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


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

¿Ha quedado contestada tu pregunta?