Отключение ведения журнала событий Windows powershell

Я использую PsExec для запуска сценариев PowerShell на удаленных компьютерах, и как побочный эффект этого, журнал событий" Windows PowerShell "(находится в средстве просмотра событий в разделе" журналы приложений и служб") записывает все наши аргументы в сценарий в разделе"HostApplication". Это проблема, поскольку некоторые из этих аргументов содержат конфиденциальные пароли.

Я попытался установить переменные предпочтений, перечисленные ниже, в false, но он по-прежнему будет создавать журналы, когда двигатель PowerShell начинает. Из того, что я прочитал, это потому, что PowerShell создает эти журналы, прежде чем он даже проверит значение этих переменных предпочтений.

$LogEngineLifeCycleEvent=$false;
$LogEngineHealthEvent=$false;
$LogProviderLifeCycleEvent=$false;
$LogProviderHealthEvent=$false;

наше текущее решение использует эти переменные предпочтений в сочетании с помещением следующей строки в начале каждого из наших сценариев PowerShell, чтобы убедиться, что журналы, созданные при запуске ядра PowerShell стираются.

Clear-EventLog "Windows PowerShell";

это решение в порядке, но я хотел был бы получить его к пункту где наш пароли никогда не сохраняются в журнале, и журнал никогда не нужно очищать. Есть ли способ отключить ведение журнала PowerShell, чтобы события не создавались в любой момент жизненного цикла ядра PowerShell?

27
задан Bob P
25.11.2022 22:53 Количество просмотров материала 3448
Распечатать страницу

2 ответа

Я думаю, что после Локальные Групповые Политики это то, что вам нужно, особенно второй:


включить модуль Logging

Если вы отключить этот параметр политики отключает ведение журнала событий выполнения для всех модулей Windows PowerShell. Отключение этого параметра политики для модуля эквивалентно установке свойства LogPipelineExecutionDetails модуля модуль False.


включить ведение журнала блоков PowerShell

этот параметр политики позволяет записывать все входные данные сценариев PowerShell в Microsoft-Windows-PowerShell / Operational журнал событий. Если этот параметр политики включен, Windows PowerShell будет регистрировать обработку команд, блоков сценариев, функций и сценариев, независимо от того, вызываются ли они в интерактивном режиме или с помощью автоматизации.

Если вы отключить этот параметр политики отключает ведение журнала ввода сценариев PowerShell.


  1. пресс Win+R
  2. тип gpedit.msc
  3. на Computer Configuration -> Administrative Templates -> Windows Components -> Windows PowerShell

  1. затем настройте параметры, описанные выше
0
отвечен Insane 2022-11-27 06:41

У меня была та же проблема, и я написал эту функцию, чтобы удалить журнал событий.

Function Remove-PowerShellEventLog {
    Write-ToLog -Message 'Remove the PowerShell event log'
    # Function constants
    $PowerShellKey = 'SYSTEM\CurrentControlSet\Services\EventLog\Windows PowerShell'
    $Admins = 'BUILTIN\Administrators'
    $ReadWriteSubTree = [Microsoft.Win32.RegistryKeyPermissionCheck]::ReadWriteSubTree
    $TakeOwnership = [System.Security.AccessControl.RegistryRights]::TakeOwnership
    $ChangePermissions = [System.Security.AccessControl.RegistryRights]::ChangePermissions

    # Define a C# type using P/Invoke and add it
    # Code borrowed from https://www.remkoweijnen.nl/blog/2012/01/16/take-ownership-of-a-registry-key-in-powershell/
    $Definition = @"
    using System;
    using System.Runtime.InteropServices; 

    namespace Win32Api
    {

        public class NtDll
        {
            [DllImport("ntdll.dll", EntryPoint="RtlAdjustPrivilege")]
            public static extern int RtlAdjustPrivilege(ulong Privilege, bool Enable, bool CurrentThread, ref bool Enabled);
        }
    }
"@
    Add-Type -TypeDefinition $Definition -PassThru

    # Enable SeTakeOwnershipPrivilege
    $Res = [Win32Api.NtDll]::RtlAdjustPrivilege(9, $True, $False, [ref]$False)

    # Open the registry key with Take Ownership rights and change the owner to Administrators
    $Key = [Microsoft.Win32.Registry]::LocalMachine.OpenSubKey("$PowerShellKey\PowerShell", $ReadWriteSubTree, $TakeOwnership)
    $Acl = $Key.GetAccessControl()
    $Acl.SetOwner([System.Security.Principal.NTAccount]$Admins)
    $Key.SetAccessControl($Acl)

    # Re-open the key with Change Permissions rights and grant Administrators Full Control rights
    $Key = [Microsoft.Win32.Registry]::LocalMachine.OpenSubKey("$PowerShellKey\PowerShell", $ReadWriteSubTree, $ChangePermissions)
    $Acl = $Key.GetAccessControl()
    $Rule = New-Object System.Security.AccessControl.RegistryAccessRule ($Admins, 'FullControl', 'Allow')
    $Acl.SetAccessRule($Rule)
    $Key.SetAccessControl($Acl)

    # Remove the parent and subkeys
    Remove-Item -Path "HKLM:$PowerShellKey" -Force -Recurse

    # Restart the Event Log service to enforce changes
    Restart-Service EventLog -Force
}
-2
отвечен Joe D 2022-11-27 08:58

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх