Я пишу простой скрипт powershell, который автоматизировал бы внешнее резервное копирование с файлового сервера Windows на другой удаленный сервер Windows. Файлы могут использоваться, поэтому для того, чтобы Robocopy успешно скопировал их, мне нужно скопировать файлы из последней доступной теневой копии тома для этого конкретного диска.
Я могу найти последний Shadow Copy с Powershell просто отлично; проблема в том, что я не могу «ссылаться» на него (монтировать) для доступа к файлам в теневой копии.
Но это «волшебным образом» изменится, если я впервые получу доступ к содержимому Shadow Copy через Windows Explorer GUI
И вдруг я могу получить доступ к теневому копированию и скопировать содержимое на удаленный сервер резервного копирования.
Вот код, о котором идет речь:
#Find the latest Shadow copy
$HDDriveID = (Get-WmiObject win32_volume -filter "DriveLetter='E:'").DeviceID
$LastShadowCopy = Get-WmiObject win32_shadowcopy | Where-Object {$_.VolumeName -eq $HDDriveID} | Sort-Object InstallDate | Select-Object -Last 1
# And parse the path so that we can mount it
$arr = $LastShadowCopy.InstallDate.Split('+').Split('.')
$VolumeShadowCopytime = [DateTime]::ParseExact($arr[0], 'yyyyMMddHHmmss', $null)
$UTCTime = $VolumeShadowCopytime.AddHours(-[int]$arr[2]/60)
$VolumeShadowCopyPath = "\\127.0.0.1\E$\@GMT-" + (Get-Date $UTCTime).ToString("yyyy.MM.dd-HH.mm.ss") + "\"
# Then, let's actually mount it:
New-PSDrive -Name Y -PSProvider FileSystem -Root $VolumeShadowCopyPath
Если я запускаю эту часть скрипта без доступа к последней теневой копии через графический интерфейс, я получаю следующую ошибку:
New-PSDrive : The specified drive root "\\127.0.0.1\E$\@GMT-2018.06.27-05.00.09\" either does not exist, or it is not a folder.
At [scriptlocation]\BackupToAzureDrive.ps1:21 char:1
+ New-PSDrive -Name Y -PSProvider FileSystem -Root $VolumeShadowCopyPat ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ReadError: (Y:PSDriveInfo) [New-PSDrive], IOException
+ FullyQualifiedErrorId : DriveRootError,Microsoft.PowerShell.Commands.NewPSDriveCommand
Опять же, как только на теневую копию (по-видимому?) Правильно ссылается Windows, когда я открываю ее через Проводник Windows, я не получаю такой ошибки. Shadow Copy монтируется без проблем, и я могу получить доступ к файлам и папкам.
Я не гуру Powershell, и я не очень увлечен этим. Я застрял с этой проблемой в течение нескольких дней. Кто-нибудь есть идеи, как решить эту проблему и / или знает об обходном пути?