sergey vasin

The IT blog

Исследуем модуль PowerShell PSDiagnostics – Hey, Scripting Guy! Blog

leave a comment »

Резюме: 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:. Таким образом я могу увидеть содержимое функции и определить, что же она делает.

 01

Итак, что же делает функция Enable-PSTrace? Она вызывает функцию Set-LogProperties и передает ей либо журналы аналитики Windows PowerShell, либо журналы аналитики вместе с журналами отладки, чтобы они были включены. Таким образом, нам нужно посмотреть на код функции Set-LogProperties и определить, что она делает.

 02

Функция 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

К сожалению, она не поддерживает символы подстановки. Если их все-таки указать в имени журнала, функция раскрашивает экран красным.

 03

Естественно, я могу получить имена журналов из утилиты EventViewer. Все что мне нужно для этого сделать – это щелкнуть правой кнопкой мыши на журнале, выбрать Properties – и я могу скопировать имя журнала в буфер.

 04

Но все таки это же 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

Оригинал:

http://blogs.technet.com/b/heyscriptingguy/archive/2012/11/23/exploring-the-powershell-psdiagnostics-module.aspx


Страницы в социальных сетях:

Twitter: https://twitter.com/vsseth
Facebook: https://fb.com/inpowershell
VKontakte: https://vk.com/inpowershell


Реклама

Written by Сергей Васин

Декабрь 4, 2012 в 13:17

Опубликовано в HeyScriptingGuyBlog, PowerShell

Tagged with

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s