Скрипт резервного копирования Powershell - PullRequest
0 голосов
/ 03 мая 2020

Итак, через пару лет go я создал сценарий, который можно было бы использовать и выполнять Windows P C, который делал бы резервную копию / копирование всех PDF-файлов в папке с документами пользователя на флаг sh диск независимо от имени пользователя. Сценарий также не использует букву диска для идентификации диска fla sh, а использует имя тома диска. Так что независимо от того, где он использовался, какой p c, пользователь или буква диска fla sh, он всегда работал.

Однако сейчас я просто воссоздал его и по какой-то причине скрипт работает без сбоев, он больше не копирует PDF-файлы на диск fla sh. Любая помощь в выяснении, почему было бы хорошо. Я не профессионал в Powershell.

param([parameter(mandatory=$true)]$VolumeName) $backupPath = $null 
get-wmiobject win32_logicaldisk | % { if ($_.VolumeName -eq $VolumeName) {  $backupDrive = $_.DeviceID } } 
$backupPath = $backupDrive + "\"
robocopy $env:username\Documents\ *.pdf $backupDrive /MIR /Z /XJD
Remove-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU' -Name '*' -ErrorAction SilentlyContinue
Remove-Item -path $env:username\Downloads\backup.ps1 -recurse

1 Ответ

0 голосов
/ 03 мая 2020

Вы создаете переменную $backupPath, но вы используете переменную backupDrive в командной строке robocopy. Вместо $env:UserPorfile вы используете $env:userName. Я сомневаюсь, что этот скрипт успешно запускался один раз. И у вас есть несколько связанных строк кода.

param(
    [parameter(mandatory = $true)]
    $VolumeName
) 
$backupDrive = (Get-CimInstance -ClassName Win32_LogicalDisk | Where-Object -Property VolumeName -EQ -Value $VolumeName).DeviceID
$backupPath = $backupDrive + '\'
robocopy $Env:USERPROFILE\Documents\ $backupPath *.pdf /S /Z /XJD /NDL /PURGE

Возможно, вы спросили автора, где вы скачали этот скрипт, чтобы исправить это. ; -)

...