Я действительно новичок в Powershell и сценариях, и был бы очень признателен, если кто-то сможет помочь.Файлы zip/compress, измененные в последний день
Я пытаюсь создать сценарий PowerShell, который выполняет следующие действия для ежедневного резервного копирования изменений в заданном количестве каталогов.
Рекурсивно найти любые новые/измененные файлы или каталоги из нескольких предустановленных мест только за последние 24 часа.
Сжать все полученные данные в виде архива
- , сохраняя структуру папок
мне удалось найти получить первый бит работает с помощью следующего сценария:
Get-ChildItem $SRC | Where {$_.PsIsContainer} | foreach-object {
Get-ChildItem $_ -Recurse -ErrorAction SilentlyContinue |
Where {$_.LastWriteTime -gt (get-date).AddDays(-1).date} |
Select FullName, LastWriteTime, Mode | Sort LastWriteTime, Mode
} >> C:\temp\LastModified-$TimeStamp.log
У меня есть еще один скрипт, который застегивает почтовый ящик по заданной директории, но я изо всех сил пытаюсь использовать результаты из приведенного выше сценария, чтобы либо скопировать файлы в папку, которую я могу затем сделать Zip, либо если t вот способ создания zip-файла без необходимости копировать файлы где-то сначала без потери структуры папок для каждого файла?
У меня есть следующий скрипт, который может Zip заданной директории (но мне нужно застегнуть несколько каталогов в один zip-файл, если только я не копирую файлы где-то вначале & как получить robocopy, чтобы копировать только файлы, измененные в последний раз 24 часа)
$Source = 'C:\Users\Downloads\RobocopyLocation\'
$Destination = 'D:\OneDrive\'
$TimeStamp = Get-Date -f yyyyMMdd_HHmmss
$ZipName = "$Destination\$TimeStamp" + '_Backup.zip '
Add-Type -Assembly "System.IO.Compression.FileSystem" ;
[System.IO.Compression.ZipFile]::CreateFromDirectory($Source, $ZipName)
Когда я запускаю скрипт ниже, я получаю сообщение об ошибке, сообщающее о том, что аргумент path имеет значение null.
$F1 = 'C:\Users\Downloads\Folder A'
$F2 = 'C:\Users\Downloads\Folder B'
$F3 = 'C:\Users\Downloads\Folder C'
$SrcFolders = ($F1, $F2, $F3);
$BackupDrive = "D:\OneDrive"
$DestFolders = ("$BackupDrive\Folder A", "$BackupDrive\Folder B", "$BackupDrive\Folder C");
$Destination = 'C:\Users\SysAdmin\Downloads\PLSWork\'
$TimeStamp = Get-Date -f yyyyMMdd_HHmmss
$ZipName = "$Destination\$TimeStamp" + '_Backup.zip '
$Option = "{$_.PsIsContainer} | foreach-object { Get-ChildItem $_ -Recurse -ErrorAction SilentlyContinue | Where {$_.LastWriteTime -gt (get-date).AddDays(-1).date} | Select FullName, LastWriteTime, Mode | Sort LastWriteTime, Mode}"
Foreach ($SrcFolders in (Get-ChildItem $SrcFolders | where $Option)){
Add-Type -Assembly "System.IO.Compression.FileSystem" ;
[System.IO.Compression.ZipFile]::CreateFromDirectory($SrcFolders, $ZipName)
}
«Я получаю сообщение об ошибке и жалуюсь на то, что аргумент path равен нулю» – 4c74356b41
Не могли бы вы выставить сообщение об ошибке? Нам нужно понять, что, когда powershell выбрасывает исключение Null. –