about_Logging_Non-Windows
Krótki opis
Program PowerShell rejestruje operacje wewnętrzne z aparatu, dostawców i poleceń cmdlet.
Długi opis
Program PowerShell rejestruje szczegóły operacji programu PowerShell, takie jak uruchamianie i zatrzymywanie aparatu oraz uruchamianie i zatrzymywanie dostawców. Rejestruje również szczegółowe informacje o poleceniach programu PowerShell.
Aby uzyskać informacje na temat rejestrowania w programie Windows PowerShell 5.1, zobacz about_Logging.
Lokalizacja dzienników programu PowerShell zależy od platformy docelowej.
- W systemie Linux program PowerShell rejestruje dziennik systemowy, który może przekazywać dalej do serwera syslog. Aby uzyskać więcej informacji, zobacz
man
strony dystrybucji systemu Linux. - W systemie macOS używany jest ujednolicony system rejestrowania firmy Apple. Aby uzyskać więcej informacji, zobacz dokumentację dla deweloperów firmy Apple dotyczącą rejestrowania.
Program PowerShell obsługuje konfigurowanie dwóch kategorii rejestrowania:
Rejestrowanie modułów — rejestruje zdarzenia wykonywania potoku dla elementów członkowskich określonych modułów. Rejestrowanie modułów musi być włączone zarówno dla sesji, jak i określonych modułów. Aby uzyskać więcej informacji na temat konfigurowania tego rejestrowania, zobacz about_PowerShell_Config.
Jeśli rejestrowanie modułów jest włączone za pośrednictwem konfiguracji, możesz włączyć i wyłączyć rejestrowanie dla określonych modułów w sesji, ustawiając wartość właściwości LogPipelineExecutionDetails modułu.
Aby na przykład włączyć rejestrowanie modułu dla modułu PSReadLine :
$psrl = Get-Module PSReadLine $psrl.LogPipelineExecutionDetails = $true Get-Module PSReadline | Select-Object Name, LogPipelineExecutionDetails
Name LogPipelineExecutionDetails ---- --------------------------- PSReadLine True
Rejestrowanie bloków skryptów — rejestruj przetwarzanie poleceń, bloków skryptów, funkcji i skryptów niezależnie od tego, czy wywoływane interaktywnie, czy za pośrednictwem automatyzacji.
Po włączeniu rejestrowania bloków skryptów program PowerShell rejestruje zawartość wszystkich bloków skryptu, które przetwarza. Po włączeniu tej informacji wszystkie nowe sesje programu PowerShell rejestrują te informacje.
Uwaga
Zaleca się włączenie rejestrowania zdarzeń chronionych w przypadku korzystania z rejestrowania bloków skryptów w celach innych niż diagnostyka. Aby uzyskać więcej informacji, zobacz about_PowerShell_Config.
Konfigurowanie rejestrowania w systemie Linux lub macOS
Konfiguracja rejestrowania w systemach Linux i macOS jest przechowywana w powershell.config.json
pliku. Plik powershell.config.json
jest plikiem w formacie JSON znajdującym się w katalogu programu PowerShell $PSHOME
. Jeśli ten plik konfiguracji nie istnieje, musisz go utworzyć, aby zmienić ustawienia domyślne. Każda instalacja programu PowerShell używa własnej kopii tego pliku.
Domyślnie program PowerShell umożliwia Informational
rejestrowanie w Operational
kanale. Konfigurację można zmienić, jeśli potrzebujesz dodatkowych danych wyjściowych dziennika, takich jak pełne lub włączanie danych wyjściowych dziennika analitycznego.
Poniższy kod to przykładowa konfiguracja:
{
"ModuleLogging": {
"EnableModuleLogging": false,
"ModuleNames": [
"PSReadLine",
"PowerShellGet"
]
},
"ScriptBlockLogging": {
"EnableScriptBlockInvocationLogging": true,
"EnableScriptBlockLogging": true
},
"LogLevel": "verbose"
}
Poniżej znajduje się lista właściwości konfigurowania rejestrowania programu PowerShell. Jeśli właściwość nie znajduje się na liście w konfiguracji, program PowerShell używa wartości domyślnej.
- Identyfikator dziennika
- Wartości:
<string name>
,powershell
- Opis: nazwa używana podczas rejestrowania. Domyślną tożsamością jest
powershell
. Ta wartość może służyć do określania różnicy między dwoma wystąpieniami instalacji programu PowerShell, takimi jak wersja wersji i wersja beta. Ta wartość służy również do przekierowywania danych wyjściowych dziennika do oddzielnego pliku.
- Wartości:
- LogChannels
- Wartości:
Operational
,Analytic
- Opis: kanały do włączenia. Rozdziel wartości przecinkami podczas określania więcej niż jednego. Domyślna wartość to
Operational
.
- Wartości:
- LogLevel
- Wartości:
Always
, ,Error
Critical
,Warning
Informational
,Verbose
Debug
- Opis: określ pojedynczą wartość. Wartości są wymienione w rosnącej kolejności szczegółowości. Wybrana wartość włącza się i wszystkie wartości przed nim. Domyślna wartość to
Informational
.
- Wartości:
- LogKeywords
- Wartości:
Runspace
,Pipeline
Host
Transport
Cmdlets
Protocol
Serializer
, ,Session
ManagedPlugin
- Opis: Słowa kluczowe umożliwiają ograniczenie rejestrowania do określonych składników w programie PowerShell. Domyślnie wszystkie słowa kluczowe są włączone i zmiana tej wartości jest przydatna tylko w przypadku wyspecjalizowanych rozwiązywania problemów.
- Wartości:
- PowerShellPolicies
- Opis: Ustawienie PowerShellPolicies zawiera opcje Rejestrowanie modułów, ProtectedEventLogging i ScriptBlockLogging. Aby uzyskać więcej informacji, zobacz Typowe ustawienia konfiguracji.
Wyświetlanie danych dziennika programu PowerShell w dzienniku w systemie Linux
Dzienniki programu PowerShell w dzienniku systemd przy użyciu demona dziennika w dystrybucjach systemu Linux, takich jak Ubuntu i Red Hat Enterprise Linux (RHEL).
Demon dziennika przechowuje komunikaty dziennika w formacie binarnym. journalctl
Użyj narzędzia , aby wysłać zapytanie do dziennika dziennika dla wpisów programu PowerShell.
journalctl --grep powershell
Demon dziennika może przekazywać komunikaty dziennika do serwera protokołu rejestrowania systemu (syslog). ForwardToSysLog
Włącz opcję w pliku konfiguracji dziennika, /etc/systemd/journald.conf
jeśli chcesz użyć rejestrowania dziennika systemowego w systemie Linux. Jest to domyślna konfiguracja dla wielu dystrybucji systemu Linux.
Wyświetlanie danych dziennika programu PowerShell w dzienniku systemowym w systemie Linux
Użyj menedżera pakietów dla dystrybucji systemu Linux, aby zainstalować serwer syslog , taki jak rsyslog , jeśli chcesz użyć rejestrowania dziennika systemowego w systemie Linux. Niektóre dystrybucje systemu Linux, takie jak ubuntu preinstalacja rsyslog.
Protokół syslog przechowuje komunikaty dziennika w standardowym formacie tekstowym. Do wykonywania zapytań lub wyświetlania zawartości dziennika systemowego można użyć dowolnego narzędzia do przetwarzania tekstu.
Domyślnie dziennik syslog zapisuje wpisy dziennika w następującej lokalizacji:
- W dystrybucjach opartych na debianie, w tym Ubuntu:
/var/log/syslog
- W dystrybucjach opartych na systemie RHEL:
/var/log/messages
W poniższym przykładzie użyto cat
polecenia do wykonywania zapytań dotyczących wpisów dziennika systemowego programu PowerShell w systemie Ubuntu.
cat /var/log/syslog | grep -i powershell
Format komunikatu dziennika systemowego
Komunikaty dziennika systemowego mają następujący format:
TIMESTAMP MACHINENAME powershell[PID]: (COMMITID:TID:CID)
[EVENTID:TASK.OPCODE.LEVEL] MESSAGE
- TIMESTAMP — data/godzina utworzenia wpisu dziennika.
- MACHINENAME — nazwa systemu, w którym utworzono dziennik.
- PID — identyfikator procesu, który zapisał wpis dziennika.
- COMMITID — identyfikator lub tag zatwierdzenia git używany do tworzenia kompilacji.
- TID — identyfikator wątku wątku, który napisał wpis dziennika.
- CID — identyfikator kanału szesnastkowego wpisu dziennika.
- 0x10 = operacyjne
- 0x11 = analizy
- EVENTID — identyfikator zdarzenia wpisu dziennika.
- TASK — identyfikator zadania dla wpisu zdarzenia
- OPCODE — kod operacji dla wpisu zdarzenia
- LEVEL — poziom dziennika dla wpisu zdarzenia
- MESSAGE — komunikat skojarzony z wpisem zdarzenia
EVENTID, TASK, OPCODE i LEVEL są tymi samymi wartościami, które są używane podczas rejestrowania w dzienniku zdarzeń systemu Windows.
Zapisywanie komunikatu dziennika programu PowerShell do oddzielnego pliku
Istnieje również możliwość przekierowania wpisów dziennika programu PowerShell do oddzielnego pliku. Gdy wpisy dziennika programu PowerShell są przekierowywane do oddzielnego pliku, nie są już rejestrowane do domyślnego pliku dziennika systemowego.
Poniższe kroki umożliwiają skonfigurowanie wpisów dziennika programu PowerShell w systemie Ubuntu w celu zapisania w pliku dziennika o nazwie powershell.log
.
Utwórz plik konfiguracji (
conf
) dla konfiguracji dziennika programu PowerShell w/etc/rsyslog.d
katalogu przy użyciu edytora plików tekstowych, takiego jaknano
. Prefiks nazwy pliku z liczbą mniejszą niż domyślna. Na przykład40-powershell.conf
gdzie wartość domyślna to50-default.conf
.sudo nano /etc/rsyslog.d/40-powershell.conf
Dodaj następujące informacje do
40-powershell.conf
pliku::syslogtag, contains, "powershell[" /var/log/powershell.log & stop
Sprawdź, czy
/etc/rsyslog.conf
ma instrukcję include dla nowego pliku. Może zawierać ogólną instrukcję, która zawiera ją, na przykład:$IncludeConfig /etc/rsyslog.d/*.conf
Jeśli tak nie jest, musisz ręcznie dodać instrukcję include.
Sprawdź, czy atrybuty i uprawnienia zostały odpowiednio ustawione.
ls -l /etc/rsyslog.d/40-powershell.conf
-rw-r--r-- 1 root root 67 Nov 28 12:51 40-powershell.conf
Jeśli plik
40-powershell.conf
ma inną własność lub uprawnienia, wykonaj następujące kroki:Ustaw własność na katalog główny.
sudo chown root:root /etc/rsyslog.d/40-powershell.conf
Ustaw uprawnienia dostępu: użytkownik główny ma odczyt/zapis, użytkownicy mają do odczytu.
sudo chmod 644 /etc/rsyslog.d/40-powershell.conf
Uruchom ponownie usługę rsyslog .
sudo systemctl restart rsyslog.service
Uruchom polecenie
pwsh
, aby wygenerować informacje programu PowerShell w celu rejestrowania.pwsh
Uwaga
Plik
/var/log/powershell.log
nie zostanie utworzony, dopóki usługa rsyslog nie zostanie ponownie uruchomiona, a program PowerShell generuje informacje do rejestrowania.Wykonaj zapytanie dotyczące pliku,
powershell.log
aby sprawdzić, czy informacje programu PowerShell są rejestrowane w nowym pliku.cat /var/log/powershell.log
Wyświetlanie danych dziennika programu PowerShell w systemie macOS
Dzienniki programu PowerShell w ujednoliconym systemie rejestrowania firmy Apple— funkcja systemu macOS, która umożliwia zbieranie i przechowywanie dzienników systemu i aplikacji w jednej scentralizowanej lokalizacji.
Ujednolicony system rejestrowania firmy Apple przechowuje komunikaty dziennika w formacie binarnym. Użyj narzędzia Konsola lub dziennika, aby wysłać zapytanie do ujednoliconego systemu rejestrowania dla wpisów programu PowerShell.
Wyświetlanie danych dziennika programu PowerShell w aplikacji konsolowej w systemie macOS
Aplikacja konsolowa w systemie macOS to narzędzie, które udostępnia graficzny interfejs użytkownika do wyświetlania danych dziennika. Aplikacja konsolowa jest domyślnie dołączona do systemu macOS i można uzyskać do nich dostęp, otwierając folder Utilities w folderze Aplikacje.
Wykonaj następujące kroki, aby wyświetlić dane dziennika programu PowerShell w aplikacji konsolowej w systemie macOS:
- Wyszukaj aplikację konsolową i uruchom ją.
- Wybierz nazwę maszyny w obszarze Urządzenia.
- W polu Wyszukaj wprowadź
pwsh
ciąg dla głównego pliku binarnego programu PowerShell i naciśnij Return. - Zmień filtr wyszukiwania z
Any
naProcess
. - Kliknij Uruchom.
- Uruchom polecenie
pwsh
, aby wygenerować informacje programu PowerShell w celu rejestrowania.
Identyfikator procesu uruchomionego wystąpienia programu PowerShell jest przechowywany w zmiennej $PID
. Wykonaj poniższe kroki, aby filtrować określone wystąpienie procesu programu PowerShell w aplikacji konsolowej.
- Uruchom wystąpienie klasy
pwsh
. - Uruchom polecenie
$PID
w wystąpieniu programu PowerShell uruchomione w poprzednim kroku, aby określić jego identyfikator procesu. - Wprowadź identyfikator procesu w
pwsh
polu Wyszukaj i naciśnij Return. - Zmień filtr wyszukiwania z
Any
naPID
. - Kliknij Uruchom.
- Generowanie informacji programu PowerShell w celu rejestrowania z wystąpienia programu PowerShell uruchomionego w pierwszym kroku.
Aby uzyskać więcej informacji, zobacz wyświetlanie komunikatów dziennika w konsoli na komputerze Mac.
Wyświetlanie danych dziennika programu PowerShell z poziomu wiersza polecenia w systemie macOS
Aby wyświetlić dane dziennika programu PowerShell z wiersza polecenia w systemie macOS, użyj log
polecenia w terminalu lub innej aplikacji hosta powłoki. Te polecenia można uruchamiać z poziomu programu PowerShell, powłoki Z (Zsh) lub powłoki Bash.
W poniższym przykładzie log
polecenie służy do wyświetlania danych dziennika w systemie w czasie rzeczywistym. Parametr procesu filtruje dane dziennika tylko pwsh
dla procesu. Jeśli masz więcej niż jedno wystąpienie pwsh
uruchomienia, parametr procesu akceptuje również identyfikator procesu jako jego wartość. Parametr poziomu pokazuje komunikaty na określonym poziomie i poniżej.
log stream --process pwsh --level info
Tryby i poziomy danych dziennika programu PowerShell w systemie macOS
Domyślnie podsystem PowerShell rejestruje komunikaty na poziomie informacji do pamięci (tryb) i domyślne komunikaty na poziomie dysku (trwałość) w systemie macOS. To zachowanie można zmienić, aby włączyć inny tryb i poziom rejestrowania przy użyciu log config
polecenia .
Poniższy przykład umożliwia rejestrowanie i trwałość na poziomie informacji dla podsystemu programu PowerShell:
sudo log config --subsystem com.microsoft.powershell --mode level:info,persist:info
Użyj parametru reset, aby przywrócić ustawienia dziennika do ustawień domyślnych podsystemu programu PowerShell:
sudo log config --subsystem com.microsoft.powershell --reset
Polecenie może służyć do eksportowania log show
elementów dziennika. Polecenie log show
udostępnia opcje eksportowania ostatnich N
elementów, elementów od danego czasu lub elementów w danym przedziale czasu.
Na przykład następujące polecenie eksportuje elementy od :9am on April 5 of 2022
log show --info --start "2022-04-05 09:00:00" --process pwsh
Aby uzyskać więcej informacji, uruchom polecenie log show --help
, aby wyświetlić pomoc dotyczącą log show
polecenia.
Warto również rozważyć zapisanie dzienników w bezpieczniejszej lokalizacji, takiej jak agregator zarządzania informacjami i zdarzeniami zabezpieczeń (SIEM). Za pomocą Microsoft Defender dla Chmury Apps możesz skonfigurować rozwiązania SIEM na platformie Azure. Aby uzyskać więcej informacji, zobacz Ogólna integracja rozwiązania SIEM.
Zobacz też
- Informacje dotyczące dziennika systemu Linux i rsyslog.conf można znaleźć na stronach lokalnych
man
komputera z systemem Linux - Aby uzyskać informacje o rejestrowaniu systemu macOS, zobacz dokumentację deweloperów firmy Apple dotyczącą rejestrowania
- W przypadku systemu Windows zobacz about_Logging_Windows
- Ogólna integracja rozwiązania SIEM