Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Краткое описание
PowerShell регистрирует внутренние операции движка, поставщиков и командлетов.
Длинное описание
PowerShell регистрирует сведения об операциях, таких как запуск и остановка движка и запуск и остановка поставщиков. Он также записывает сведения о командах PowerShell.
Сведения о ведении журнала в Windows PowerShell 5.1 см. в about_Logging.
Расположение журналов PowerShell зависит от целевой платформы.
- В Linux PowerShell ведёт журналы в системный журнал systemd , который может пересылаться на syslog-сервер . Дополнительные сведения см. на страницах
manв вашем дистрибутиве Linux. - В macOS используется единая система ведения журнала Apple. Дополнительные сведения см. в документации разработчика Apple по ведению журнала.
PowerShell поддерживает настройку двух категорий ведения журнала:
Ведение журнала модулей— запись событий выполнения конвейера для членов указанных модулей. Ведение журнала модулей должно быть включено как для сеанса, так и для определенных модулей. Дополнительные сведения о настройке этого журнала см. в about_PowerShell_Config.
Если ведение журнала модулей включено с помощью конфигурации, вы можете включить и отключить ведение журнала для определенных модулей в сеансе, задав значение свойства LogPipelineExecutionDetails свойству модуля.
Например, чтобы включить ведение журнала для модуля PSReadLine:
$psrl = Get-Module PSReadLine $psrl.LogPipelineExecutionDetails = $true Get-Module PSReadLine | Select-Object Name, LogPipelineExecutionDetailsName LogPipelineExecutionDetails ---- --------------------------- PSReadLine TrueВедение журнала блоков скриптов — записывайте обработку команд, блоков скриптов, функций и скриптов, вызываемых интерактивным способом или с помощью автоматизации.
При включении ведения журнала блоков скриптов PowerShell записывает содержимое всех блоков скриптов, которые он обрабатывает. После включения все новые сеансы PowerShell регистрируют эти сведения.
Заметка
Рекомендуется включить ведение журнала защищенных событий при использовании ведения журнала блоков скриптов для других целей диагностики. Дополнительные сведения см. в about_PowerShell_Config.
Настройка ведения журнала в Linux или macOS
Конфигурация для ведения журнала в Linux и macOS хранится в файле powershell.config.json. Файл powershell.config.json — это форматированный файл JSON, который находится в каталоге $PSHOME PowerShell. Если этот файл конфигурации не существует, необходимо создать его, чтобы изменить параметры по умолчанию. Каждая установка PowerShell использует собственную копию этого файла.
По умолчанию PowerShell позволяет Informational ведения журнала в канале Operational. Можно изменить конфигурацию, если требуется дополнительный вывод журнала, например подробный или включение аналитического журнала.
Следующий код является примером конфигурации:
{
"ModuleLogging": {
"EnableModuleLogging": false,
"ModuleNames": [
"PSReadLine",
"PowerShellGet"
]
},
"ScriptBlockLogging": {
"EnableScriptBlockInvocationLogging": true,
"EnableScriptBlockLogging": true
},
"LogLevel": "verbose"
}
Ниже приведен список свойств для настройки ведения журнала PowerShell. Если свойство не указано в конфигурации, PowerShell использует значение по умолчанию.
-
LogIdentity
- Значения:
<string name>,powershell - Описание: имя, используемое при ведении системных журналов. Идентификатор по умолчанию —
powershell. Это значение можно использовать для определения разницы между двумя экземплярами установки PowerShell, такими как выпуск и бета-версия. Это значение также используется для перенаправления выходных данных журнала в отдельный файл.
- Значения:
-
LogChannels
- Значения:
Operational,Analytic - Описание: каналы, которые нужно включить. Разделите значения с запятой при указании нескольких значений. Значение по умолчанию —
Operational.
- Значения:
-
Уровень логирования
- Значения:
Always,Critical,Error,Warning,Informational,Verbose,Debug - Описание. Укажите одно значение. Значения перечислены в порядке увеличения многословности. Выбранное значение активирует себя и все значения перед ним. Значение по умолчанию —
Informational.
- Значения:
-
ЛогКлючевыеСлова
- Значения:
Runspace,Pipeline,Protocol,Transport,Host,Cmdlets,Serializer,Session,ManagedPlugin - Описание. Ключевые слова позволяют ограничить ведение журнала определенными компонентами в PowerShell. По умолчанию все ключевые слова включены и изменяются только для специализированного устранения неполадок.
- Значения:
-
PowerShellPolicies
- Описание. Параметр
PowerShellPolicies содержит параметры ModuleLogging ,ProtectedEventLogging иScriptBlockLogging . Дополнительные сведения см. в разделе Общие параметры конфигурации.
- Описание. Параметр
Просмотр данных журнала PowerShell в журнале в Linux
PowerShell записывает данные в системный журнал systemd с помощью демона journald на дистрибутивах Linux, таких как Ubuntu и Red Hat Enterprise Linux (RHEL).
Демон journald хранит сообщения журнала в двоичном формате. Используйте утилиту journalctl, чтобы запросить журнал для записей PowerShell.
journalctl --grep powershell
Демон journald может пересылать сообщения журнала на сервер по протоколу системного журнала (syslog). Включите параметр ForwardToSysLog в файле конфигурации /etc/systemd/journald.confжурнала, если вы хотите использовать логирование syslog в системе Linux. Это конфигурация по умолчанию для многих дистрибутивов Linux.
Просмотр данных журнала PowerShell в системном журнале в Linux
Используйте диспетчер пакетов для дистрибутива Linux, чтобы установить сервер системного журнала , например rsyslog, если вы хотите использовать ведение журнала системных журналов в системе Linux. Некоторые дистрибутивы Linux, такие как предустановка Ubuntu rsyslog.
Протокол системного журнала сохраняет сообщения журнала в стандартном текстовом формате. Вы можете использовать любую программу обработки текста для запроса или просмотра содержимого системного журнала.
По умолчанию syslog записывает журнальные сообщения в следующий путь:
- В дистрибутивах на основе Debian, включая Ubuntu:
/var/log/syslog - В дистрибутивах на основе RHEL:
/var/log/messages
В следующем примере команда cat используется для запроса системного журнала PowerShell записей в Ubuntu.
cat /var/log/syslog | grep -i powershell
Формат сообщения системного журнала
Сообщения системного журнала имеют следующий формат:
TIMESTAMP MACHINENAME powershell[PID]: (COMMITID:TID:CID)
[EVENTID:TASK.OPCODE.LEVEL] MESSAGE
- TIMESTAMP — дата и время создания записи журнала.
- MACHINENAME — имя системы, в которой был создан журнал.
- PID — идентификатор процесса, написавшего запись журнала.
- COMMITID — идентификатор или тег коммита git, используемый для создания сборки.
- TID — идентификатор потока, записавшего запись журнала.
-
CID — шестнадцатеричный идентификатор канала записи журнала.
- 0x10 = операционный
- 0x11 = Аналитика
- EVENTID — идентификатор события записи журнала.
- TASK — идентификатор задачи для записи события
- OPCODE — код opcode для записи события
- LEVEL — уровень логов для записи события
- MESSAGE — сообщение, связанное с записью события
EVENTID, TASK, OPCODEи LEVEL являются теми же значениями, что и при ведении журнала событий Windows.
Запись сообщения журнала PowerShell в отдельный файл
Кроме того, можно перенаправить записи журнала PowerShell в отдельный файл. Когда записи журнала PowerShell перенаправляются в отдельный файл, они больше не записываются в файл системного журнала по умолчанию.
Чтобы настроить запись записей журнала PowerShell в Ubuntu в файл журнала с именем powershell.log, выполните следующие шаги.
Создайте файл конфигурации (
conf) для конфигурации журнала PowerShell в каталоге/etc/rsyslog.dс помощью текстового редактора файлов, напримерnano. Добавьте к имени файла номер, меньший, чем по умолчанию. Например,40-powershell.conf, где значение по умолчанию50-default.conf.sudo nano /etc/rsyslog.d/40-powershell.confДобавьте следующие сведения в файл
40-powershell.conf::syslogtag, contains, "powershell[" /var/log/powershell.log & stopУбедитесь, что
/etc/rsyslog.confсодержит инструкцию include для нового файла. У него может быть общая формулировка, включающая это, например:$IncludeConfig /etc/rsyslog.d/*.confЕсли это не так, необходимо добавить инструкцию include вручную.
Убедитесь, что атрибуты и разрешения заданы соответствующим образом.
ls -l /etc/rsyslog.d/40-powershell.conf-rw-r--r-- 1 root root 67 Nov 28 12:51 40-powershell.confЕсли файл
40-powershell.confимеет разные права владения или разрешения, выполните следующие действия.Задайте для владельца корневой.
sudo chown root:root /etc/rsyslog.d/40-powershell.confЗадайте разрешения доступа: root имеет права на чтение и запись, пользователи имеют права на чтение.
sudo chmod 644 /etc/rsyslog.d/40-powershell.conf
Перезапустите службу rsyslog.
sudo systemctl restart rsyslog.serviceЗапустите
pwsh, чтобы создать сведения PowerShell для журнала.pwshЗаметка
Файл
/var/log/powershell.logне создается, пока служба rsyslog не будет перезапущена, и PowerShell создает сведения для журнала.Запросите файл
powershell.log, чтобы убедиться, что данные PowerShell записываются в новый файл.cat /var/log/powershell.log
Просмотр данных журнала PowerShell в macOS
PowerShell записывает журналы в единую систему логирования Apple — функцию macOS, которая позволяет собирать и хранить журналы системных и прикладных программ в одном централизованном месте.
Единая система ведения журнала Apple хранит сообщения журнала в двоичном формате. Необходимо использовать средство log для запроса единой системы ведения журнала для событий журнала PowerShell. События журнала PowerShell не отображаются в приложении консоли
Просмотр данных журнала PowerShell из командной строки в macOS
Чтобы просмотреть данные журнала PowerShell из командной строки в macOS, используйте команду log в терминале или другом приложении узла оболочки. Эти команды можно запускать из PowerShell, Z Shellили Bash.
В следующем примере команда log используется для отображения данных журнала в системе в режиме реального времени. Параметр процесса
log stream --predicate "subsystem == 'com.microsoft.powershell'" --level info
Для экспорта элементов журнала можно использовать команду log show. Команда log show предоставляет параметры экспорта последних N элементов, элементов с заданного времени или элементов в течение заданного периода времени.
Например, следующая команда экспортирует элементы с 9am on April 5, 2022:
log show --start "2022-04-05 09:00:00" --predicate "subsystem == 'com.microsoft.powershell'"
Дополнительные сведения можно получить, запустив log show --help с целью просмотра справки для команды log show.
Вы также можете выводить данные журнала в формате JSON, что позволяет преобразовать данные события в объекты PowerShell. Следующий пример выводит события в формате JSON. Командлет ConvertFrom-Json используется для преобразования данных JSON в объекты PowerShell, которые хранятся в переменной $logRecord.
log show --predicate "subsystem == 'com.microsoft.powershell'" --style json |
ConvertFrom-Json | Set-Variable logRecord
Вы также можете рассмотреть возможность сохранения журналов в более безопасном месте, таком как Система управления информацией и событиями безопасности (SIEM) агрегатор. С помощью Microsoft Defender для облачных приложений можно настроить SIEM в Azure. Дополнительные сведения см. в интеграции с общей SIEM.
Режимы и уровни данных журнала PowerShell в macOS
По умолчанию подсистема PowerShell записывает сообщения уровня информации в память (режим), а сообщения по умолчанию - на диск (сохраняемость) в macOS. Это поведение можно изменить, чтобы включить другой режим и уровень ведения журнала с помощью команды log config.
В следующем примере включается ведение журнала на уровне сведений и сохраняемость подсистемы PowerShell:
sudo log config --subsystem com.microsoft.powershell --mode level:info,persist:info
Используйте параметр сброса, чтобы вернуть параметры журнала к настройкам по умолчанию для подсистемы PowerShell.
sudo log config --subsystem com.microsoft.powershell --reset
См. также
- Сведения системного журнала Linux и rsyslog.conf см. на локальных страницах
manкомпьютера Linux. - Сведения о журнала
macOS см. в документации разработчика Apple по ведению журнала - Для получения сведений о Windows см. about_Logging_Windows
- Общая интеграция SIEM
PowerShell