Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Kısa açıklama
PowerShell, motor, sağlayıcılar ve cmdlet'lerden iç işlemleri günlüğe kaydeder.
Uzun açıklama
PowerShell, motoru başlatma ve durdurma, sağlayıcıları başlatma ve durdurma gibi PowerShell işlemlerinin ayrıntılarını kaydeder. Ayrıca PowerShell komutları hakkındaki ayrıntıları günlüğe kaydeder.
Windows PowerShell 5.1'de günlüğe kaydetme hakkında bilgi için bkz. about_Logging.
PowerShell günlüklerinin konumu hedef platforma bağlıdır.
- Linux'ta PowerShell, syslog sunucusuna iletebilen sistemli günlük günlüğe kaydeder. Daha fazla bilgi için Bkz. Linux dağıtımınız için
mansayfaları. - macOS'ta Apple'ın birleşik günlük sistemi kullanılır. Daha fazla bilgi için Apple'ın günlüğe kaydetmeyle ilgili geliştirici belgelerinebakın.
PowerShell, iki tür günlük kaydı yapılandırmayı destekler:
Modül günlüğü - Belirtilen modüllerin üyeleri için işlem hattı yürütme olaylarını kaydedin. Modül günlüğü hem oturum hem de belirli modüller için etkinleştirilmelidir. Bu günlüğü yapılandırma hakkında daha fazla bilgi için bakınız about_PowerShell_Config.
Modül günlüğü yapılandırma aracılığıyla etkinleştirilirse, modülün LogPipelineExecutionDetails özelliğini ayarlayarak oturumdaki belirli modüller için günlüğe kaydetmeyi etkinleştirebilir ve devre dışı bırakabilirsiniz.
Örneğin, PSReadLine modülü için modül günlüğünü etkinleştirmek için:
$psrl = Get-Module PSReadLine $psrl.LogPipelineExecutionDetails = $true Get-Module PSReadLine | Select-Object Name, LogPipelineExecutionDetailsName LogPipelineExecutionDetails ---- --------------------------- PSReadLine TrueBetik bloğu günlüğü - Etkileşimli olarak veya otomasyon aracılığıyla çağrılsa da komutların, betik engellemelerinin, işlevlerin ve betiklerin işlenmesini kaydedin.
Betik Bloğu Günlüğünü etkinleştirdiğinizde PowerShell, işlediği tüm betik bloklarının içeriğini kaydeder. Etkinleştirildikten sonra, tüm yeni PowerShell oturumları bu bilgileri günlüğe kaydeder.
Not
Tanılama dışında herhangi bir amaçla Betik Bloğu Günlüğü kullanılırken Korumalı Olay Günlüğünün etkinleştirilmesi önerilir. Daha fazla bilgi için bkz. about_PowerShell_Config.
Linux veya macOS'ta günlüğe kaydetmeyi yapılandırma
Linux ve macOS'ta günlüğe kaydetme yapılandırması powershell.config.json dosyasında depolanır.
powershell.config.json dosyası, PowerShell dizininde bulunan $PSHOME biçimlendirilmiş bir dosyadır. Bu yapılandırma dosyası yoksa, varsayılan ayarları değiştirmek için oluşturmanız gerekir. PowerShell'in her yüklemesi bu dosyanın kendi kopyasını kullanır.
Varsayılan olarak, PowerShell Informational günlüğe kaydetmeyi Operational kanalında etkinleştirir. Ayrıntılı veya analitik günlük çıkışını etkinleştirme gibi ek günlük çıkışı gerekiyorsa yapılandırmayı değiştirebilirsiniz.
Aşağıdaki kod örnek bir yapılandırmadır:
{
"ModuleLogging": {
"EnableModuleLogging": false,
"ModuleNames": [
"PSReadLine",
"PowerShellGet"
]
},
"ScriptBlockLogging": {
"EnableScriptBlockInvocationLogging": true,
"EnableScriptBlockLogging": true
},
"LogLevel": "verbose"
}
Aşağıda, PowerShell günlüğünü yapılandırmaya yönelik özelliklerin listesi yer alır. Özellik yapılandırmada listelenmiyorsa PowerShell varsayılan değeri kullanır.
-
logidentity
- Değerler:
<string name>,powershell - Açıklama: Günlüğe kaydetme sırasında kullanılacak ad. Varsayılan kimlik
powershell. Bu değer, sürüm ve beta sürümü gibi bir PowerShell yüklemesinin iki örneği arasındaki farkı söylemek için kullanılabilir. Bu değer, günlük çıkışını ayrı bir dosyaya yeniden yönlendirmek için de kullanılır.
- Değerler:
- LogKanalları
- Değerler:
Operational,Analytic - Açıklama: Etkinleştirecek kanallar. Birden fazla değer belirtirken değerleri virgülle ayırın. Varsayılan değer
Operational.
- Değerler:
-
LogLevel
- Değerler:
Always,Critical,Error,Warning,Informational,Verbose,Debug - Açıklama: Tek bir değer belirtin. Değerler, ayrıntı derecesini artırarak listelenir. Seçtiğiniz değer kendisini ve ondan önceki tüm değerleri etkinleştirir. Varsayılan değer
Informational.
- Değerler:
-
LogKeywords
- Değerler:
Runspace,Pipeline,Protocol,Transport,Host,Cmdlets,Serializer,Session,ManagedPlugin - Açıklama: Anahtar sözcükler, kaydı PowerShell içindeki belirli bileşenlerle sınırlama olanağı sağlar. Varsayılan olarak, tüm anahtar sözcükler etkinleştirilir ve bu değeri değiştirmek yalnızca özel sorun giderme için kullanışlıdır.
- Değerler:
-
PowerShellPolicies
- Açıklama: PowerShellPolicies
ayarı ModuleLogging ,ProtectedEventLogging veScriptBlockLogging seçeneklerini içerir. Daha fazla bilgi için bkz. Ortak yapılandırma ayarları.
- Açıklama: PowerShellPolicies
Linux'ta günlüğe alınan PowerShell günlük verilerini görüntüleme
PowerShell, Ubuntu ve Red Hat Enterprise Linux (RHEL) gibi Linux dağıtımlarında journald daemon'u kullanarak systemd günlük'e kaydeder.
journald arka plan programı, günlük mesajlarını ikili formatta depolar. PowerShell girdileri için günlük günlüğünü sorgulamak için journalctl yardımcı programını kullanın.
journalctl --grep powershell
journald daemon, günlük iletilerini bir Sistem Günlüğü Protokolü (syslog) sunucusuna iletebilir. Linux sisteminizde ForwardToSysLog günlüğe kaydetmeyi kullanmak istiyorsanız /etc/systemd/journald.confgünlüğe yapılandırma dosyasındaki seçeneğini etkinleştirin. Bu, birçok Linux dağıtımı için varsayılan yapılandırmadır.
Linux'ta syslog'da PowerShell günlük verilerini görüntüleme
Linux sisteminizde syslog günlüğü kullanmak istiyorsanız rsyslog gibi bir syslog sunucusu yüklemek için Linux dağıtımınız için paket yöneticisini kullanın. Ubuntu önyüklemesi rsysloggibi bazı Linux dağıtımları.
Syslog protokolü günlük iletilerini standartlaştırılmış bir metin biçiminde depolar. Syslog içeriğini sorgulamak veya görüntülemek
Varsayılan olarak, syslog günlük girdilerini aşağıdaki konuma yazar:
- Ubuntu dahil olmak üzere Debian tabanlı dağıtımlarda:
/var/log/syslog - RHEL tabanlı dağıtımlarda:
/var/log/messages
Aşağıdaki örnek, Ubuntu'da PowerShell cat girdilerini sorgulamak için komutunu kullanır.
cat /var/log/syslog | grep -i powershell
Syslog ileti biçimi
Syslog iletileri aşağıdaki biçime sahiptir:
TIMESTAMP MACHINENAME powershell[PID]: (COMMITID:TID:CID)
[EVENTID:TASK.OPCODE.LEVEL] MESSAGE
- TIMESTAMP - Günlük girişinin oluşturulduğu tarih/saat.
- MACHINENAME - Günlüğün oluşturulduğu sistemin adı.
- PID - Günlük girdisini yazan işlemin işlem kimliği.
- COMMITID - Yapıyı oluşturmak için kullanılan git commit kimliği veya etiketi.
- TID - Günlük girdisini yazan iş parçacığının kimliği.
-
CID - Günlük girişinin onaltılık kanal tanımlayıcısı.
- 0x10 = İşlemsel
- 0x11 = Analiz
- EVENTID - Günlük girişinin olay tanımlayıcısı.
- TASK - Olay girdisinin görev tanımlayıcısı
- OPCODE - Olay girdisi için opcode
- SEVİYE - Olay kaydının günlük kaydı seviyesi
- MESSAGE - Olay girişiyle ilişkili ileti
EVENTID, TASK, OPCODEve LEVEL, Windows olay günlüğünde oturum açarken kullanılan değerlerle aynıdır.
PowerShell günlük iletisini ayrı bir dosyaya yazma
PowerShell günlük girdilerini ayrı bir dosyaya yönlendirmek de mümkündür. PowerShell günlük girdileri ayrı bir dosyaya yeniden yönlendirildiğinde, artık varsayılan syslog dosyasına yönlendirilmez.
Aşağıdaki adımlar, Ubuntu'da PowerShell günlük girdilerini powershell.logadlı bir günlük dosyasına yazacak şekilde yapılandırılır.
confgibi bir metin dosyası düzenleyicisi kullanarak/etc/rsyslog.ddizininde PowerShell günlük yapılandırması için bir yapılandırma (nano) dosyası oluşturun. Dosya adına varsayılandan küçük bir sayı ekleyin. Örneğin, varsayılanın40-powershell.confolduğu durumda50-default.conf.sudo nano /etc/rsyslog.d/40-powershell.conf40-powershell.confdosyasına aşağıdaki bilgileri ekleyin::syslogtag, contains, "powershell[" /var/log/powershell.log & stop/etc/rsyslog.confyeni dosya için bir include deyimine sahip olduğunu doğrulayın. Bunu içeren genel bir deyimi olabilir, örneğin:$IncludeConfig /etc/rsyslog.d/*.confAksi takdirde, manuel olarak bir include deyimi eklemeniz gerekir.
Özniteliklerin ve izinlerin uygun şekilde ayarlandığını doğrulayın.
ls -l /etc/rsyslog.d/40-powershell.conf-rw-r--r-- 1 root root 67 Nov 28 12:51 40-powershell.conf40-powershell.confdosyanızın sahipliği veya izinleri farklıysa aşağıdaki adımları tamamlayın:Sahipliğini kök
olarak ayarlayın. sudo chown root:root /etc/rsyslog.d/40-powershell.confErişim izinlerini ayarla: kök okuma/yazma iznine sahiptir, kullanıcılar okuma iznine sahiptir.
sudo chmod 644 /etc/rsyslog.d/40-powershell.conf
rsyslog hizmetini yeniden başlatın.
sudo systemctl restart rsyslog.serviceGünlüğe kaydedilecek PowerShell bilgilerini oluşturmak için
pwshçalıştırın.pwshNot
/var/log/powershell.logdosyası, rsyslog hizmeti yeniden başlatılana ve PowerShell günlüğe kaydedilecek bilgiler oluşturana kadar oluşturulmaz.PowerShell bilgilerinin yeni dosyaya kaydedilmekte olduğunu doğrulamak için
powershell.logdosyasını sorgula.cat /var/log/powershell.log
macOS'ta PowerShell günlük verilerini görüntüleme
PowerShell, Apple'ın macOS'taki sistem ve uygulama günlüklerinin tek bir merkezi konumda toplanıp depolanmasını sağlayan birleşik günlük sistemine kayıt yapar.
Apple'ın birleşik günlük sistemi günlük iletilerini ikili biçimde depolar. PowerShell günlük olaylarının birleşik günlük sistemini sorgulamak için log aracını kullanmanız gerekir. PowerShell günlük olayları macOS'taki Konsolu uygulamasında görünmez. Konsol uygulaması, birleştirilmiş günlük sisteminden önce gelen eski syslog tabanlı günlüğü için tasarlanmıştır.
macOS'ta komut satırından PowerShell günlük verilerini görüntüleme
macOS'taki bir komut satırından PowerShell günlük verilerini görüntülemek için log veya diğer kabuk konak uygulamasındaki komutunu kullanın. Bu komutlar PowerShell, Z Shellveya Bashçalıştırılabilir.
Aşağıdaki örnekte, log komutu, sisteminizdeki günlük verilerini gerçek zamanlı olarak göstermek için kullanılır.
işlem parametresi günlük verilerini yalnızca pwsh işlemi için filtreler. Birden fazla çalışan pwsh örneğiniz varsa, işlem parametresi de işlem kimliğini değeri olarak kabul eder.
düzeyi parametresi, iletileri belirtilen düzeyde ve altında gösterir.
log stream --predicate "subsystem == 'com.microsoft.powershell'" --level info
Kayıt öğelerini (günlük) dışarı aktarmak için log show komutu kullanılabilir.
log show komutu son N öğeleri, belirli bir zamandan bu yana öğeleri veya belirli bir zaman aralığındaki öğeleri dışarı aktarma seçenekleri sağlar.
Örneğin, aşağıdaki komut 9am on April 5, 2022itibaren öğeleri dışarı aktarır:
log show --start "2022-04-05 09:00:00" --predicate "subsystem == 'com.microsoft.powershell'"
Daha fazla bilgi için log show --help komutunun yardımını görüntülemek üzere log show çalıştırın.
Günlük verileriniN çıkışını JSON biçiminde de yapabilirsiniz. Bu sayede olay verilerini PowerShell nesnelerine dönüştürebilirsiniz. Aşağıdaki örnek, olayları JSON biçiminde oluşturur.
ConvertFrom-Json cmdlet'i, JSON verilerini PowerShell nesnelerine dönüştürmek için kullanılır ve $logRecord değişkeninde depolanır.
log show --predicate "subsystem == 'com.microsoft.powershell'" --style json |
ConvertFrom-Json | Set-Variable logRecord
Günlükleri Güvenlik Bilgileri ve Olay Yönetimi (SIEM) toplayıcısı gibi daha güvenli bir konuma kaydetmeyi de düşünebilirsiniz. Cloud Apps için Microsoft Defender'ı kullanarak Azure'da SIEM ayarlayabilirsiniz. Daha fazla bilgi için bkz. Genel SIEM tümleştirmesi.
macOS'ta PowerShell günlük verilerinin modları ve düzeyleri
Varsayılan olarak, PowerShell alt sistemi bilgi düzeyi iletilerini belleğe (mod) ve varsayılan düzeydeki iletileri diske (kalıcı depolama) macOS'ta günlüğe kaydeder. Bu davranış, log config komutu kullanılarak farklı bir modu ve günlük düzeyini etkinleştirmek için değiştirilebilir.
Aşağıdaki örnek, PowerShell alt sistemi için bilgi düzeyinde günlüğe kaydetmeyi ve kalıcılığı etkinleştirir:
sudo log config --subsystem com.microsoft.powershell --mode level:info,persist:info
Günlük ayarlarını PowerShell alt sisteminin varsayılan ayarlarına döndürmek için sıfırlama parametresini kullanın:
sudo log config --subsystem com.microsoft.powershell --reset
Ayrıca bakınız
- Linux syslog ve rsyslog.conf bilgileri için Linux bilgisayarın yerel
mansayfalarına bakın - macOS günlük tutma bilgileri için, Apple'ın günlük tutma ile ilgili geliştirici belgelerine bakın
- Windows ile ilgili ayrıntılar için bkz. about_Logging_Windows
- Genel SIEM tümleştirme
PowerShell