Ce code identique a été utilisé par 3 serveurs, et un seul d'entre eux échoue silencieusement à déplacer les éléments (il les supprime toujours, mais ils n'apparaissent pas dans le partage).Travail PowerShell SQL Étape Déplacement-L'élément ne fonctionne pas sur 1 serveur
Azure MapShare.ps1
param (
[string]$DriveLetter,
[string]$StorageLocation,
[string]$StorageKey,
[string]$StorageUser
)
if (!(Test-Path "${DriveLetter}:"))
{
cmd.exe /c "net use ${DriveLetter}: ${StorageLocation} /u:${StorageUser} ""${StorageKey}"""
}
Get-Exclusion-Days.ps1
param (
[datetime]$startDate,
[int]$daysBack
)
$date = $startDate
$endDate = (Get-Date).AddDays(-$daysBack)
$allDays =
do {
"*"+$date.ToString("yyyyMMdd")+"*"
$date = $date.AddDays(-1)
} until ($date -lt $endDate)
return $allDays
Migrate-Files.ps1
param(
[string]$Source,
[string]$Filter,
[string]$Destination,
[switch]$Remove=$False
)
#Test if source path exist
if((Test-Path -Path $Source.trim()) -ne $True) {
throw 'Source did not exist'
}
#Test if destination path exist
if ((Test-Path -Path $Destination.trim()) -ne $True) {
throw 'Destination did not exist'
}
#Test if no files in source
if((Get-ChildItem -Path $Source).Length -eq 0) {
throw 'No files at source'
}
if($Remove)
{
#Move-Item removes the source files
Move-Item -Path $Source -Filter $Filter -Destination $Destination -Force
} else {
#Copy-Item keeps a local copy
Copy-Item -Path $Source -Filter $Filter -Destination $Destination -Force
}
return $True
L'étape de travail est de type « PowerShell » sur les 3 serveurs et contient ce code identique:
#Create mapping if missing
D:\Scripts\Azure-MapShare.ps1 -DriveLetter 'M' -StorageKey "[AzureStorageKey]" -StorageLocation "[AzureStorageAccountLocation]\backup" -StorageUser "[AzureStorageUser]"
#Copy files to Archive
D:\Scripts\Migrate-Files.ps1 -Source "D:\Databases\Backup\*.bak" -Destination "D:\Databases\BackupArchive"
#Get date range to exclude
$exclusion = D:\Scripts\Get-Exclusion-Days.ps1 -startDate Get-Date -DaysBack 7
#Remove items that are not included in exclusion range
Remove-Item -Path "D:\Databases\BackupArchive\*.bak" -exclude $exclusion
#Move files to storage account. They will be destroyed
D:\Scripts\Migrate-Files.ps1 -Source "D:\Databases\Backup\*.bak" -Destination "M:\" -Remove
#Remove remote backups that are not from todays backup
Remove-Item -Path "M:\*.bak" -exclude $exclusion
Si je lance l'étape de travail en utilisant SQL puis les fichiers sont supprimés, mais ne semblent pas en le compte de stockage. Si vous exécutez ce bloc de code manuellement, ils sont déplacés. Lorsque je démarre PowerShell sur le serveur, un message d'erreur s'affiche: "La tentative d'exécution de l'opération InitializeDefaultDrives sur le fournisseur 'FileSystem' a échoué." Toutefois, cela n'a pas vraiment d'impact sur le reste des opérations (copie des fichiers de sauvegarde dans le dossier BackupArchive, par exemple).
Je dois mentionner que la copie article omet également de copier sur la part, mais parvient à copier dans le dossier/BackupArchive