about_Logging_Non-Windows
Krótki opis
Program PowerShell rejestruje operacje wewnętrzne z aparatu, dostawców i poleceń cmdlet.
Długi opis
Szczegółowe informacje o operacjach programu PowerShell są dzienniki programu PowerShell. Na przykład program PowerShell będzie rejestrować operacje, takie jak uruchamianie i zatrzymywanie aparatu oraz uruchamianie i zatrzymywanie dostawców. Będzie również rejestrować szczegółowe informacje o poleceniach programu PowerShell.
Lokalizacja dzienników programu PowerShell jest zależna od platformy docelowej. W systemie Linux można używać dzienników programu PowerShell do dzienników syslog i rsyslog.conf . Aby uzyskać więcej informacji, zapoznaj się ze stronami lokalnymi man
komputera z systemem Linux. W systemie macOS jest używany system rejestrowania os_log . Aby uzyskać więcej informacji, zobacz dokumentację dla deweloperów os_log.
Wyświetlanie danych wyjściowych dziennika programu PowerShell w systemie Linux
Dzienniki programu PowerShell do dziennika systemu w systemie Linux i dowolne narzędzia powszechnie używane do wyświetlania zawartości dziennika syslog mogą być używane.
Format wpisów dziennika używa następującego szablonu:
TIMESTAMP MACHINENAME powershell[PID]: (COMMITID:TID:CID)
[EVENTID:TASK.OPCODE.LEVEL] MESSAGE
Pole | Opis |
---|---|
TIMESTAMP |
Data/godzina utworzenia wpisu dziennika. |
MACHINENAME |
Nazwa systemu, w którym został utworzony dziennik. |
PID |
Identyfikator procesu, który napisał wpis dziennika. |
COMMITID |
Identyfikator git commit lub tag używany do tworzenia kompilacji. |
TID |
Identyfikator wątku wątku, który napisał wpis dziennika. |
CID |
Identyfikator kanału szesnastkowy wpisu dziennika. |
10 = operacyjne, 11 = analityczne | |
EVENTID |
Identyfikator zdarzenia wpisu dziennika. |
TASK |
Identyfikator zadania wpisu zdarzenia |
OPCODE |
Kod opcode dla wpisu zdarzenia |
LEVEL |
Poziom dziennika wpisu zdarzenia |
MESSAGE |
Komunikat skojarzony z wpisem zdarzenia |
Uwaga
EVENTID
, TASK
, OPCODE
i LEVEL
są tymi samymi wartościami, które są używane podczas rejestrowania w dzienniku zdarzeń systemu Windows.
Filtrowanie wpisów dziennika programu PowerShell przy użyciu narzędzia rsyslog
Zwykle wpisy dziennika programu PowerShell są zapisywane domyślnie location/file
dla dziennika systemowego. Można jednak przekierować wpisy do pliku niestandardowego.
Twórca konfiguracji dziennika programu PowerShell i podaj liczbę, która jest mniejsza niż 50 (dla
50-default.conf
), na przykład40-powershell.conf
. Plik powinien zostać umieszczony w obszarze/etc/rsyslog.d
.Dodaj następujący wpis do pliku:
:syslogtag, contains, "powershell[" /var/log/powershell.log & stop
Upewnij się, że
/etc/rsyslog.conf
zawiera nowy plik. Często ma ogólną instrukcję include, która wygląda następująco:$IncludeConfig /etc/rsyslog.d/*.conf
Jeśli tak nie jest, musisz ręcznie dodać instrukcję include.
Upewnij się, że atrybuty i uprawnienia są odpowiednio ustawione.
-rw-r--r-- 1 root root 67 Nov 28 12:51 40-powershell.conf
Ustaw własność na root.
chown root:root /etc/rsyslog.d/40-powershell.conf
Ustawianie uprawnień dostępu: katalog główny ma odczyt/zapis, użytkownicy mają odczyt.
chmod 644 /etc/rsyslog.d/40-powershell.conf
Wyświetlanie danych wyjściowych dziennika programu PowerShell w systemie macOS
Najprostszą metodą wyświetlania danych wyjściowych dziennika programu PowerShell w systemie macOS jest użycie aplikacji konsolowej .
- Search dla aplikacji konsolowej i uruchom ją.
- Wybierz nazwę maszyny w obszarze Urządzenia.
- W polu Search wprowadź
pwsh
nazwę głównego pliku binarnego programu PowerShell. - Zmień filtr wyszukiwania z
Any
naProcess
. - Wykonaj operacje.
- Opcjonalnie zapisz wyszukiwanie w przyszłości.
Aby filtrować określone wystąpienie procesu programu PowerShell w konsoli programu , zmienna $pid
zawiera identyfikator procesu.
- Wprowadź pid (identyfikator procesu) w polu Search.
- Zmień filtr wyszukiwania na
PID
. - Wykonaj operacje.
Wyświetlanie danych wyjściowych dziennika programu PowerShell z wiersza polecenia
Polecenie log
może służyć do wyświetlania wpisów dziennika programu PowerShell z poziomu wiersza polecenia.
sudo log stream --predicate 'process == "pwsh"' --info
Utrwalanie danych wyjściowych dziennika programu PowerShell
Domyślnie program PowerShell używa domyślnego rejestrowania tylko do pamięci w systemie macOS. To zachowanie można zmienić, aby włączyć trwałość przy użyciu log config
polecenia .
Następujący skrypt umożliwia rejestrowanie i trwałość na poziomie informacji:
log config --subsystem com.microsoft.powershell --mode=persist:info,level:info
Następujące polecenie przywraca rejestrowanie programu PowerShell do stanu domyślnego:
log config --subsystem com.microsoft.powershell --mode=persist:default,level:default
Po włączeniu log show
trwałości można użyć polecenia do eksportowania elementów dziennika. Polecenie 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 2018
log show --info --start "2018-04-05 09:00:00" --predicate "process = 'pwsh'"
Aby uzyskać pomoc, możesz uzyskać pomoc, log
uruchamiając log show --help
dodatkowe informacje.
Porada
Podczas wykonywania dowolnych poleceń dziennika z wiersza lub skryptu programu PowerShell użyj podwójnych cudzysłowów wokół całego ciągu predykatu i pojedynczych cudzysłowów w obrębie. Pozwala to uniknąć konieczności ucieczki znaków podwójnego cudzysłowu w ciągu predykatu.
Warto również rozważyć zapisanie dzienników zdarzeń w bezpieczniejszej lokalizacji, takiej jak centralny moduł zbierający dziennik zdarzeń lub agregator SIEM . Usługę SIEM można skonfigurować na platformie Azure. Aby uzyskać więcej informacji, zobacz Ogólna integracja rozwiązania SIEM.
Konfigurowanie rejestrowania w systemie spoza systemu Windows
W systemie Windows rejestrowanie jest konfigurowane przez utworzenie odbiorników śledzenia ETW lub użycie Podgląd zdarzeń w celu włączenia rejestrowania analitycznego. W systemach Linux i macOS rejestrowanie jest konfigurowane przy użyciu pliku powershell.config.json
. W pozostałej części tej sekcji omówiono konfigurowanie rejestrowania programu PowerShell w systemie spoza systemu Windows.
Domyślnie program PowerShell umożliwia rejestrowanie informacyjne w kanale operacyjnym. Oznacza to, że wszystkie dane wyjściowe dziennika generowane przez program PowerShell oznaczone jako operacyjne i mają poziom dziennika (śledzenia) większy niż informacje będą rejestrowane. Czasami diagnozy mogą wymagać dodatkowych danych wyjściowych dziennika, takich jak pełne dane wyjściowe dziennika lub włączenie danych wyjściowych dziennika analitycznego.
Plik powershell.config.json
jest plikiem w formacie JSON znajdującym się w katalogu programu PowerShell $PSHOME
. Każda instalacja programu PowerShell używa własnej kopii tego pliku. W przypadku normalnego działania ten plik pozostaje niezmieniony. Chociaż może to być przydatne, aby zmienić niektóre ustawienia w pliku, diagnostykę lub rozróżnienie między wieloma wersjami programu PowerShell w tym samym systemie, a nawet wieloma kopiami tej samej wersji (zobacz LogIdentity
w poniższej tabeli).
Poniższy kod to przykładowa konfiguracja:
{
"Microsoft.PowerShell:ExecutionPolicy": "RemoteSigned",
"PowerShellPolicies": {
"ScriptExecution": {
"ExecutionPolicy": "RemoteSigned",
"EnableScripts": true
},
"ScriptBlockLogging": {
"EnableScriptBlockInvocationLogging": true,
"EnableScriptBlockLogging": true
},
"ModuleLogging": {
"EnableModuleLogging": false,
"ModuleNames": [
"PSReadline",
"PowerShellGet"
]
},
"ProtectedEventLogging": {
"EnableProtectedEventLogging": false,
"EncryptionCertificate": [
"Joe"
]
},
"Transcription": {
"EnableTranscripting": true,
"EnableInvocationHeader": true,
"OutputDirectory": "F:\\tmp\\new"
},
"UpdatableHelp": {
"DefaultSourcePath": "f:\\temp"
},
"ConsoleSessionConfiguration": {
"EnableConsoleSessionConfiguration": false,
"ConsoleSessionConfigurationName": "name"
}
},
"LogLevel": "verbose"
}
Właściwości konfigurowania rejestrowania programu PowerShell są wymienione w poniższej tabeli. Wartości oznaczone gwiazdką, takie jak Operational*
, wskazują wartość domyślną, gdy w pliku nie podano żadnej wartości.
Właściwość | Wartości | Opis |
---|---|---|
LogIdentity |
(nazwa ciągu) | Nazwa do użycia podczas rejestrowania. Domyślnie usługa |
Powershell* | PowerShell to tożsamość. Ta wartość może być następująca: | |
służy do określania różnicy między dwoma | ||
wystąpienia instalacji programu PowerShell, takie jak | ||
jako wersja wersji i wersji beta. Ta wartość to | ||
służy również do przekierowywania danych wyjściowych dziennika do elementu | ||
oddzielny plik w systemie Linux. Zobacz dyskusję na temat | ||
rsyslog powyżej. | ||
LogChannels |
Operacyjne* | Kanały do włączenia. Oddzielanie wartości |
Analityczne | z przecinkiem podczas określania więcej niż jednego. | |
LogLevel |
Zawsze | Określ pojedynczą wartość. Wartość jest włączona |
Krytyczne | wartości i wszystkie powyższe wartości w | |
Błąd | po lewej stronie. | |
Ostrzeżenie | ||
Informacyjne* | ||
Pełny | ||
Debugowanie | ||
LogKeywords |
Przestrzeń uruchamiania | Słowa kluczowe umożliwiają ograniczenie rejestrowania |
Potok | do określonych składników w programie PowerShell. Autor: | |
Protokół | domyślnie wszystkie słowa kluczowe są włączone i zmieniane | |
Transport | ta wartość jest przydatna tylko dla bardzo | |
Host | wyspecjalizowane rozwiązywanie problemów. | |
Polecenia cmdlet | ||
Serializer | ||
Sesja | ||
ManagedPlugin |
Zobacz też
- W przypadku informacji o systemie Linux syslog i rsyslog.conf zapoznaj się z lokalnymi stronami komputera
man
z systemem Linux. - Aby uzyskać informacje o os_log systemu macOS, zobacz dokumentację dla deweloperów os_log.
- about_Logging_Windows
- Ogólna integracja rozwiązania SIEM