Copies shared drives in a Microsoft 365 tenant to shared drives in another tenant.
Copy-M365SharedDrives -Target <String> [-ShowPrereqs] [<CommonParameters>]
Copy-M365SharedDrives -Target <String> -Csv <String> [-TranslationCsv <String>] [-SourceFolder <String>]
[-TargetFolder <String>] [-IncludePattern <String>] [-DryRun] [-Verbosity <String>]
[<CommonParameters>]
Use the Copy-M365SharedDrives
cmdlet to copy shared drives
in a Microsoft 365 tenant to shared drives in another tenant.
See the Examples section for cmdlet requirements.
Description
This example copies pairs of Microsoft 365 tenant and Google Workspace tenant drives
listed in shared_drives.csv
.
Tenant configuration
Tenant | Direction | APIs | Scopes |
---|---|---|---|
Microsoft 365 | Source | Microsoft Graph | Sites.Read.All |
Google Workspace | Target | Google Drive | https://www.googleapis.com/auth/drive |
CSV format
SourceDisplayName | SourceId | TargetDisplayName | TargetId | TargetManager |
---|---|---|---|---|
Source Drive | b!CbtYWro… | Target Drive | 0ADL_3kYG… | manager@target.org |
TMCTools
@{
Source = @{
M365ClientId = '11111111-2222-3333-4444-555555555555'
M365ClientSecret = 'abcDeFghij1lMn23OpQrStUVwx4YzAbCD5EfghIJkLM='
M365Tenant = 'source.org'
}
Target = @{
GOAdmin = 'admin@target.org'
GOServiceAccountKey = 'C:\ProgramData\Transend\tools\target.org.json'
}
}
Copy-M365SharedDrives -Csv 'shared_drives.csv' -Target Google
Description
This example copies pairs of Microsoft 365 tenant and Microsoft 365 tenant drives
listed in shared_drives.csv
.
Additional parameters change the basic functionality shown in Example 1:
Using -SourceFolder
and -TargetFolder
restricts the operation to the
Migration
folder.
Using Rclone.IncludeMetadata
and -TranslationCsv
propagates permissions.
Tenant configuration
Tenant | Direction | APIs | Scopes |
---|---|---|---|
Microsoft 365 | Source | Microsoft Graph | Sites.Read.All |
Microsoft 365 | Target | Microsoft Graph | Sites.ReadWrite.All |
CSV format
SourceDisplayName | SourceId | TargetDisplayName | TargetId |
---|---|---|---|
Source Drive | b!CbtYWro… | Target Drive | b!EdvAYtq… |
Translation CSV format
SourceName | TargetName |
---|---|
user1@source.org | user1@target.org |
user2@source.org | user2@target.org |
source.org | target.org |
TMCTools
@{
Source = @{
M365ClientId = '11111111-2222-3333-4444-555555555555'
M365ClientSecret = 'abcDeFghij1lMn23OpQrStUVwx4YzAbCD5EfghIJkLM='
M365Tenant = 'source.org'
}
Target = @{
M365ClientId = '66666666-7777-8888-9999-000000000000'
M365ClientSecret = 'mnoPqRstuv1wXy23ZaBcDeFGhi4JkLmNO5PqrsTUvWX='
M365Tenant = 'target.org'
}
Rclone = @{
IncludeMetadata = $true
}
}
Copy-M365SharedDrives -Csv 'shared_drives.csv' -Target M365 -SourceFolder 'Migration' -TargetFolder 'Migration' -TranslationCsv 'translations.csv'
Description
This example copies pairs of Microsoft 365 tenant and Windows filesystem drives
listed in shared_drives.csv
.
Tenant configuration
Tenant | Direction | APIs | Scopes |
---|---|---|---|
Microsoft 365 | Source | Microsoft Graph | Sites.Read.All |
Windows filesystem | Target | N/A | N/A |
CSV format
SourceDisplayName | SourceId | TargetDisplayName | TargetId |
---|---|---|---|
Source Drive | b!CbtYWro… | Target Drive | C:\Drives\Share |
TMCTools
@{
Source = @{
M365ClientId = '11111111-2222-3333-4444-555555555555'
M365ClientSecret = 'abcDeFghij1lMn23OpQrStUVwx4YzAbCD5EfghIJkLM='
M365Tenant = 'source.org'
}
Target = @{}
}
Copy-M365SharedDrives -Csv 'shared_drives.csv' -Target Windows
Description
This example uses the TargetFolder
CSV field to merge multiple Microsoft 365 tenant
drives into a single Google Workspace tenant drive.
Tenant configuration
Tenant | Direction | APIs | Scopes |
---|---|---|---|
Microsoft 365 | Source | Microsoft Graph | Sites.Read.All |
Google Workspace | Target | Google Drive | https://www.googleapis.com/auth/drive |
CSV format
SourceDisplayName | SourceId | TargetDisplayName | TargetId | TargetManager | TargetFolder |
---|---|---|---|---|---|
Source Drive 1 | b!CbtYWro… | Merged Drive | 0ADL_3kYG… | manager@target.org | Source Drive 1 |
Source Drive 2 | b!DcuZXsp… | Merged Drive | 0ADL_3kYG… | manager@target.org | Source Drive 2 |
TMCTools
@{
Source = @{
M365ClientId = '11111111-2222-3333-4444-555555555555'
M365ClientSecret = 'abcDeFghij1lMn23OpQrStUVwx4YzAbCD5EfghIJkLM='
M365Tenant = 'source.org'
}
Target = @{
GOAdmin = 'admin@target.org'
GOServiceAccountKey = 'C:\ProgramData\Transend\tools\target.org.json'
}
}
Copy-M365SharedDrives -Csv 'shared_drives.csv' -Target Google
The path to a CSV file containing drives to process. See the examples for the required CSV format.
Type: String
Parameter Sets: Action
Aliases:
Required: True
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
When specified, only log what would happen instead of actually transferring data.
Type: SwitchParameter
Parameter Sets: Action
Aliases:
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
A matching pattern to determine which folders and files to include. See https://rclone.org/filtering/ for syntax details.
Type: String
Parameter Sets: Action
Aliases:
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
Prints the cmdlet prerequisites.
Type: SwitchParameter
Parameter Sets: Help
Aliases:
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
Restrict the source-side listing to the specified folder.
Note that this parameter is a global option that applies to all drives listed in the CSV file.
This parameter has no effect if the SourceFolder
CSV field is set.
Type: String
Parameter Sets: Action
Aliases:
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
The target platform. Supported values are Google
, M365
and Windows
.
Type: String
Parameter Sets: (All)
Aliases:
Accepted values: Google, M365, Windows
Required: True
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
Specifies the name of a top-level folder in the target into which all data will be transferred. The source folder hierarchy is preserved under the specified folder.
Note that this parameter is a global option that applies to all drives listed in the CSV file.
This parameter has no effect if the TargetFolder
CSV field is set.
Type: String
Parameter Sets: Action
Aliases:
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
The path to a CSV file containing translation mappings. The file must use
SourceName;TargetName
as the field identifiers.
Type: String
Parameter Sets: Action
Aliases:
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
The amount of detail logged during processing.
Type: String
Parameter Sets: Action
Aliases:
Accepted values: None, Normal, Detailed, Diagnostic
Required: False
Position: Named
Default value: Detailed
Accept pipeline input: False
Accept wildcard characters: False
This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see about_CommonParameters.