Резюме: Microsoft Scripting Guy, Ed Wilson рассказывает о модуле Windows PowerShell PSDiagnostics.
Быстрый взгляд на модуль PSDiagnostics
Модуль PSDiagnostics содержит 10 функций, которые могут оказаться полезными при поиске неполадок в PowerShell. Для получения списка этих функций используем командлет Get-Command.
PS C:\> gcm -module psdiagnostics
CommandType Name ModuleName
———— —- ———-
Function Disable-PSTrace PSDiagnostics
Function Disable-PSWSManCombinedTrace PSDiagnostics
Function Disable-WSManTrace PSDiagnostics
Function Enable-PSTrace PSDiagnostics
Function Enable-PSWSManCombinedTrace PSDiagnostics
Function Enable-WSManTrace PSDiagnostics
Function Get-LogProperties PSDiagnostics
Function Set-LogProperties PSDiagnostics
Function Start-Trace PSDiagnostics
Function Stop-Trace PSDiagnostics
К сожалению, для этих функций отсутствует какая-либо справка. Это означает, что нам остается только догадываться, что делает та или иная функция и как ее можно использовать. Итак, что делают функции модуля PSDiagnostics? Обычно, для нахождения подобной информации используется Get-Help. Ниже приведен вывод справки для функции Enable-PSTrace.
PS C:\> help Enable-PSTrace
NAME
Enable-PSTrace
SYNTAX
Enable-PSTrace [-Force] [-AnalyticOnly]
ALIASES
None
REMARKS
None
Да… Понятнее не стало. Однако, одна их отличных вещей, касающихся функций в Windows PowerShell– это диск Function:. Таким образом я могу увидеть содержимое функции и определить, что же она делает.
Итак, что же делает функция Enable-PSTrace? Она вызывает функцию Set-LogProperties и передает ей либо журналы аналитики Windows PowerShell, либо журналы аналитики вместе с журналами отладки, чтобы они были включены. Таким образом, нам нужно посмотреть на код функции Set-LogProperties и определить, что она делает.
Функция Set-LogProperties несколько длиннее, но одна вещь видна четко – функция вызывает Wevtutil и включает логи. Она также устанавливает параметры резервного копирования журнала, его максимальный размер и прочие вещи.
Заметка: За последний год я написал пару постов об использовании Wevtutil. Один из них Automatically Enable and Disable Trace Logs using PowerShell, адругой Use PowerShell to Clear All Logs.
Функция Get-LogProperties отображает информацию о различных диагностических журналах.
PS C:\> Get-LogProperties Microsoft-Windows-PowerShell/Admin
Name : Microsoft-Windows-PowerShell/Admin
Enabled : True
Type : Admin
Retention : True
AutoBackup : False
MaxLogSize : 1048985600
К сожалению, она не поддерживает символы подстановки. Если их все-таки указать в имени журнала, функция раскрашивает экран красным.
Естественно, я могу получить имена журналов из утилиты EventViewer. Все что мне нужно для этого сделать – это щелкнуть правой кнопкой мыши на журнале, выбрать Properties – и я могу скопировать имя журнала в буфер.
Но все таки это же PowerShell. И мне не обязательно указывать длинные и запутанные имена журналов, поскольку я могу воспользоваться командлетом Get-WinEvent для определения имен журналов Windows PowerShell, и передать их функции Get-LogProperties.
PS C:\> Get-WinEvent -ListLog *powershell* | Foreach {Get-LogProperties $_.logname}
Name : Windows PowerShell
Enabled : True
Type : Admin
Retention : False
AutoBackup : False
MaxLogSize : 15728640
Name : Microsoft-Windows-PowerShell/Admin
Enabled : True
Type : Admin
Retention : True
AutoBackup : False
MaxLogSize : 1048985600
Name : Microsoft-Windows-PowerShell/Operational
Enabled : True
Type : Operational
Retention : False
AutoBackup : False
MaxLogSize : 15728640
Если мне нужна информация только об одном журнале, я могу воспользоваться командлетом Where-Object для фильтрации результатов.
PS C:\> Get-WinEvent -ListLog *powershell* | where logname -match admin | %{Get-LogProperties $_.logname}
Name : Microsoft-Windows-PowerShell/Admin
Enabled : True
Type : Admin
Retention : True
AutoBackup : False
MaxLogSize : 1048985600
Если вы думаете, почему я использую функцию Get-LogProperties вместо командлета Get-WinEvent, то вот его выходная информация:
PS C:\> Get-WinEvent -ListLog *powershell* | where logname -match admin
LogMode MaximumSizeInBytes RecordCount LogName
——- —————— ———— ——-
Retain 1048985600 0 Microsoft-Windows-PowerShell/Admin
Обе команды показывают метод сохранения данных и максимальный размер файла. Но функция Get-LogProperties также сообщает мне включен ли журнал, а также включено ли резервное копирование.
Автор:
Ed Wilson, Microsoft Scripting Guy
Оригинал:
Страницы в социальных сетях:
Twitter: https://twitter.com/vsseth
Facebook: https://fb.com/inpowershell
VKontakte: https://vk.com/inpowershell