Я хочу автоматически проверять последние результаты WindowsServerBackup через PowerShell на Windows Server 2012/2012 R2.
Это не только "успех" или "неудача", но и "резервный том" и "сообщение об ошибке". Поэтому я попробовал использовать следующие способы, но не могу получить вышеуказанную информацию.
Get-WB*
этого недостаточно, что я хочу сделать.- Я не могу найти объект WMI в WindowsServerBackup.
Get-Eventlog
не могу получить доступ к резервному копированию (журнал приложений и служб/Microsoft/Windows/резервное копирование)
Я пропустил какой-то правильный путь? Что мне делать?
решение1
С информацией отэтот сайт, мне удалось это выяснить:
Вы можете использовать Get-WinEvent
командлет, потому что Get-EventLog
можете получить доступ только к очень немногим файлам журналов. Чтобы увидеть все файлы журналов в системе, вы можете использовать:
Get-WinEvent -ListLog *
Чтобы найти определенный, вы можете использовать
Get-WinEvent -ListLog * | Where LogName -like "*backup*"
Некоторые из этих журналов доступны только с повышенными привилегиями. Тот, который нам нужен, называется "Microsoft-Windows-Backup", к нему можно получить доступ без прав администратора.
Вы можете получить все события из этого журнала с помощью этой команды:
Get-WinEvent "Microsoft-Windows-Backup"
Таким образом можно получить доступ к журналу событий резервного копирования, но я не уверен, содержит ли он всю необходимую вам информацию.
решение2
Чтобы получить обзор, в котором можно увидеть сообщения об ошибках:
# All messages
Get-WinEvent "Microsoft-Windows-Backup" | Format-Table -Wrap
# Only the newest
Get-WinEvent "Microsoft-Windows-Backup" -MaxEvents 1 | Format-Table -Wrap
Чтобы получить EventData с подробностями, например, информацией об объемах, вы можете использовать этот код:
# Save as variable
$Event = Get-WinEvent "Microsoft-Windows-Backup" -MaxEvents 1
# Convert to XML
$EventXML = [xml]$Event.ToXml()
# Show all EventData
$EventXML.Event.EventData.Data | Format-Table -Wrap
# Show only VolumesInfo data, with things like path, size and number of files
$EventXML.SelectSingleNode("//*[@Name='VolumesInfo']")."#text"
Конечно, это можно проанализировать и дальше, но с помощью этих команд вы можете получить информацию.
Пример вывода с моего сервера:
TimeCreated Id LevelDisplayName Сообщение
----------- -- ---------------- -------
21-02-2018 23:12:16 14 Информация Операция резервного копирования завершена.<VolumeInfo><VolumeInfoItem Name="D:" OriginalAccessPath="D:" State="14" HResult="0" DetailedHResult="0" PreviousState="8" IsCritical="0" IsIncremental="1" BlockLevel="0" HasFiles="1" HasSystemState="0" IsCompacted="0" IsPruned="0" IsRecreateVhd="0" FullBackupReason="0" DataTransferred="6274990320" NumUnreadableBytes="0" TotalSize="5118410992" TotalNoOfFiles="4691" Flags="84" BackupTypeDetermined="1" SSBTotalNoOfFiles="0" SSBTotalSizeOnDisk="0" /></VolumeInfo>