Я никогда не делал Powershell раньше.После некоторого исследования я написал скрипт, который архивирует папку.
Я хочу убедиться, что могу зафиксировать любую ошибку, сгенерированную во время выполнения, поэтому я добавил блок Try Catch и пытаюсь записать все ошибки.Мне нужно убедиться, что процесс архивирования прошел успешно.
Этот сценарий предполагает, что мы можем добавить существующий zip-файл, если он уже существует.Позже я добавлю проверку, чтобы удалить предыдущий zip-файл, однако пока, если я оставлю все как есть, чтобы проверить ведение журнала, так как оно генерирует ошибку.
Однако ошибка не обнаружена и не зарегистрирована, как ожидалось.Любые предложения относительно того, что я делаю не так?Во всплывающем окне появляется сообщение об ошибке: «Эта папка уже содержит папку с именем« Резервные копии ». Переименуйте папку, которую вы пытаетесь скопировать, а затем снова выполните операцию.
########################################################
#
# Zip-Folder.ps1
#
# Usage:
# To zip up a folder:
# (Zip Application) (Target Archive path and File Name) (Source Folder Path to Backup) (Log Path and File Name)
# d:\zip-folder.ps1 d:\Backups_Archive d:\Backups
########################################################
try{
$target = $args[0]
$files = Get-item $args[1]
$log = $args[2]
if (-not $target.EndsWith('.zip')) {$target += '.zip'}
if (-not (test-Path $target)) {
set-content $target ("PK" + [char]5 + [char]6 + ("$([char]0)" * 18))
}
$ZipFile = (new-object -com shell.application).NameSpace($target)
# $files | foreach {$zipfile.CopyHere($_.fullname)}
foreach($file in $files)
{
$zipfile.CopyHere($file.FullName)
Start-sleep -milliseconds 500
}
} catch {
Add-Content $log $error[0]
}
Для выполнения: (Zip-приложение)(Целевой путь к архиву и имя файла) (Путь к исходной папке для резервного копирования) (Путь к журналу и имя файла) Например, d: \ zip-folder.ps1 d: \ Backups_Archive d: \ Backups d: \ zip.log