about_Logging_Non-Windows
Краткое описание
PowerShell регистрирует внутренние операции из подсистемы, поставщиков и командлетов.
Подробное описание
Сведения о операциях PowerShell, таких как запуск и остановка обработчика и запуск и остановка поставщиков. Он также записывает сведения о командах PowerShell.
Сведения о ведении журнала в Windows PowerShell 5.1 см. в about_Logging.
Расположение журналов PowerShell зависит от целевой платформы.
- В Linux PowerShell записывает журнал в системный журнал , который может пересылать на сервер системного журнала . Дополнительные сведения см. на
man
страницах дистрибутива Linux. - В macOS используется единая система ведения журнала Apple. Дополнительные сведения см . в документации разработчиков Apple по ведению журнала.
PowerShell поддерживает настройку двух категорий ведения журнала:
Ведение журнала модулей— запись событий выполнения конвейера для членов указанных модулей. Ведение журнала модулей должно быть включено как для сеанса, так и для определенных модулей. Дополнительные сведения о настройке этого журнала см. в about_PowerShell_Config.
Если ведение журнала модулей включено с помощью конфигурации, можно включить и отключить ведение журнала для определенных модулей в сеансе, задав значение свойства LogPipelineExecutionDetails модуля.
Например, чтобы включить ведение журнала модулей для модуля PSReadLine :
$psrl = Get-Module PSReadLine $psrl.LogPipelineExecutionDetails = $true Get-Module PSReadline | Select-Object Name, LogPipelineExecutionDetails
Name LogPipelineExecutionDetails ---- --------------------------- PSReadLine True
Ведение журнала блоков скриптов — записывайте обработку команд, блоков скриптов, функций и скриптов, вызываемых интерактивным способом или с помощью автоматизации.
При включении ведения журнала блоков скриптов PowerShell записывает содержимое всех блоков скриптов, которые он обрабатывает. После включения все новые сеансы PowerShell регистрируют эти сведения.
Настройка ведения журнала в Linux или macOS
Конфигурация для ведения журнала в Linux и macOS хранится в powershell.config.json
файле. Файл powershell.config.json
представляет собой форматированный файл JSON, размещенный в каталоге PowerShell$PSHOME
. Если этот файл конфигурации не существует, необходимо создать его, чтобы изменить параметры по умолчанию. Каждая установка 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
.
- Значения:
- LogLevel
- Значения:
Always
,Critical
Error
Warning
Informational
Verbose
Debug
- Описание. Укажите одно значение. Значения перечислены в порядке детализации. Выбранное значение включает и все значения перед ним. Значение по умолчанию —
Informational
.
- Значения:
- LogKeywords
- Значения:
Runspace
, ,Protocol
Pipeline
Transport
Host
Cmdlets
Serializer
Session
ManagedPlugin
- Описание. Ключевые слова позволяют ограничить ведение журнала определенными компонентами в PowerShell. По умолчанию все ключевые слова включены и изменяются только для специализированного устранения неполадок.
- Значения:
- PowerShellPolicies
- Описание. Параметр PowerShellPolicies содержит параметры ModuleLogging, ProtectedEventLogging и ScriptBlockLogging. Дополнительные сведения см. в разделе "Общие параметры конфигурации".
Просмотр данных журнала PowerShell в журнале в Linux
PowerShell записывает журнал в системный журнал с помощью управляющей программы журнала в дистрибутивах Linux, таких как Ubuntu и Red Hat Enterprise Linux (RHEL).
Управляющая программа журнала сохраняет сообщения журнала в двоичном формате. Используйте служебную journalctl
программу для запроса журнала для записей PowerShell.
journalctl --grep powershell
Управляющая программа журнала может пересылать сообщения журнала на сервер системного протокола ведения журнала (syslog). ForwardToSysLog
Включите параметр в /etc/systemd/journald.conf
файле конфигурации журнала, если вы хотите использовать ведение журнала системных журналов в системе Linux. Это конфигурация по умолчанию для многих дистрибутивов Linux.
Просмотр данных журнала PowerShell в системном журнале в Linux
Используйте диспетчер пакетов для дистрибутива Linux, чтобы установить сервер системного журнала , например rsyslog , если вы хотите использовать ведение журнала системных журналов в системе Linux. Некоторые дистрибутивы Linux, такие как Ubuntu preinstall rsyslog.
Протокол системного журнала сохраняет сообщения журнала в стандартном текстовом формате. Вы можете использовать любую программу обработки текста для запроса или просмотра содержимого системного журнала .
По умолчанию системный журнал записывает записи журнала в следующее расположение:
- В дистрибутивах на основе 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
Задайте разрешения доступа: корневой каталог имеет чтение и запись, пользователи считывают.
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 не отображаются в консольном приложении в macOS. Консольное приложение предназначено для более старого журнала на основе системного журнала, которое предопределяет единую систему ведения журнала.
Просмотр данных журнала PowerShell из командной строки в macOS
Чтобы просмотреть данные журнала PowerShell из командной строки в macOS, используйте log
команду в терминале или другом приложении оболочки. Эти команды можно запускать из PowerShell, Z Shell или Bash.
В следующем примере log
команда используется для отображения данных журнала в системе в режиме реального времени. Параметр процесса фильтрует данные журнала только pwsh
для процесса. Если у вас несколько экземпляров pwsh
выполнения, параметр процесса также принимает идентификатор процесса в качестве значения. Параметр уровня отображает сообщения на указанном уровне и ниже.
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