Note: PowerShell integration requires a ShareGate Migrate Pro or Enterprise subscription. It is not available on the Essentials plan.
Pour éviter de saisir vos identifiants à chaque connexion dans une instruction de boucle foreach avec l'authentification par navigateur et l'authentification moderne, vous pouvez utiliser le paramètre PowerShell -UseCredentialsFrom pour créer une seule connexion et réutiliser les identifiants de cette connexion dans votre script.
-UseCredentialsFrom
Pour illustrer le fonctionnement de -UseCredentialsFrom, voici un script de connexion de base :
# 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
Lorsque vous exécutez ce script, une fenêtre de navigateur s'ouvre pour vous permettre de vous connecter à mysitecollection1. Une fois la connexion établie, le script utilise automatiquement cette première connexion pour se connecter à mysitecollection2 et mysitecollection3.
Comment utiliser -UseCredentialsFrom avec une boucle foreach
Une instruction de boucle foreach utilise généralement des accolades pour répéter les commandes de connexion et de copie pour chaque ligne d'un fichier CSV avec l'application. En voici un exemple :
# 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
}
Lorsque vous exécutez ce script, vous êtes invité à saisir vos identifiants dans une fenêtre de navigateur avant l'instruction foreach.
La connexion est stockée dans la variable $dstsiteConnection, qui est réutilisée à chaque passage de -UseCredentialsFrom $dstsiteConnection dans la boucle.
Cela vous évite de devoir ressaisir vos identifiants pour chaque site copié.
Remarque : Évitez d'utiliser l'une des URL listées dans votre CSV pour la variable $dstsiteConnection. Si vous utilisez une des URL listées, la commande Clear-Variable effacera vos identifiants.
Réutiliser une connexion enregistrée entre les sessions
Le paramètre -UseCredentialsFrom réutilise une connexion au sein du même script. Pour réutiliser une connexion entre des sessions distinctes, enregistrez-la dans le Connection Manager avec -SaveConnection lors de la connexion, puis récupérez-la plus tard avec Get-SharePointConnection et transmettez-la à Connect-Site ou Connect-Tenant avec -UseConnection.
$connection = Get-SharePointConnection -Id 01c0ebab-a17e-4ae3-9caf-ba09f05f2970
Connect-Site -Url "http://mytenantdomain/sites/mysitecollection" -UseConnection $connection
Pour plus de détails, consultez Get-SharePointConnection.
Cet article a été traduit à l'aide de l'intelligence artificielle. En cas de doute, veuillez consulter la version originale en anglais.
