Powershell – пример анализа событий аудита


 

 

Задача: найти все события аудита удаления файлов

 

Решение:

 

1.  Открываем Event Viewer

2.  Выбираем Security Log

3.  На панели Action нажимаем Filter Current Log

4.  Создаем фильтр:

clip_image001

5.  Переходим на закладку XML и копируем с нее текст фильтра:

 

clip_image002

6.  Вставляем фильтр в скрипт.

7.  Пример скрипта:

 

$filter =

<QueryList>

  <Query Id=»0″ Path=»Security»>

    <Select Path=»Security»>*[System[Provider[@Name=’Microsoft-Windows-Audit’] and (band(Keywords,13510798882111488)) and (EventID=4660)]]</Select>

  </Query>

</QueryList>

«@

 

$events = Get-WinEvent -FilterXml $filter

 

# Process events as needed

 

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

 

Полезные ссылки:

Description of security events in Windows Vista and in Windows Server 2008

Security Event Descriptions (XP/2003)

Tracking a Remote File Deletion Back to the Source

Реклама

Powershell – синхронизация GAL


Когда-то я уже публиковал статью на эту тему, но она умерла вместе с тем сайтом… А тема осталась актуальной, поэтому вновь размещаю полезную информацию по синхронизации GAL (на сегодняшний день в контексте Exchange 2010).

Читать далее

Критический порог – 1500 элементов в LDAP запросах


 

В статье Критический порог – 1500 элементов в multi-valued атрибутах шла речь о том, что запросы LDAP возвращают ограниченное число элементов. Причина в том, что LDAP имеет защитные ограничения.

Вот статья, которая подробно описывает параметры ограничений и как их изменить с помощью утилиты ntdsutil

KB315071 How to view and set LDAP policy in Active Directory by using Ntdsutil.exe

Powershell — включить пользователя во все группы другого пользователя


 

Иной раз надо новую учетную запись пользователя (или компьютера) включить в большое количество групп. Конечно правильнее создавать ресурсные группы, затем включать в них ролевые группы и уже в ролевые группы включать учетные записи – это значительно экономит время: включил пользователя в нужную ролевую группы, и все настроено. Тем не менее не всегда так получается. И вот несколько команд на Powershell,  помощью которых можно быстро склонировать «права» одного пользователя новой учетной записи:

$usernameFrom=“uuu”

$usernameTo=“www”

$gs = Get-ADPrincipalGroupMembership   -Identity $usernameFrom

Add-ADPrincipalGroupMembership -Identity $usernameTo -MemberOf $gs

 

 

Powershell – удаление пользователя из всех групп


Собственно все просто:

$username=«uuu»

$gs = Get-ADPrincipalGroupMembership   -Identity $username

Remove-ADPrincipalGroupMembership -Identity $username -MemberOf $gs -Whatif

 

Если нужно удалить пользователя только из групп определенного домена, то нужно использовать параметр ResourceContextServer (плюс возможно ResourceContextPartition) комендлета Get-ADPrincipalGroupMembership.

Критический порог — 1500 элементов в multi-valued атрибутах


 

Группы Active Directory в поле MemberOf могут иметь десятки тысяч записей. Не знаю, что люди пишут в другие multi-valued атрибуты Exchange в таком количестве, но у некоторых число значений превышает 1500 элементов. И в обоих случаях начинаются проблемы. Стандартные утилиты вроде dsget при обращении к таким атрибутам выдают ошибку. Скрипты использующие ADSI возвращают только первые 1500 значений.

Читать далее

Sharepoint 2010 Копирование или перемещение документов с помощью Powershell


 

Все чаще приходится что-то «ковырять» на Sharepoint 2010 с помощью Powershell. Открыл для себя, что API в Sharepoint очень забавное. Например, копирование или перемещение документа из одной библиотеки в другую не так уж и тривиально и имеет массу подводных камней.

Вот несколько источников проливающих свет на это безобразие.

Копирование это не копирование элемента, а файла! Более того если есть папки в библиотеке, то надо копировать папку или даже делать рекурсию по подпапкам.

http://social.technet.microsoft.com/Forums/en-AU/sharepoint2010programming/thread/35afce1e-065c-4f31-bca8-3cc615fbdd9f

Либо использовать экспорт-импорт. http://blogs.msdn.com/b/jorman/archive/2011/01/08/copying-lists-with-powershell-in-sharepoint-2010.aspx

Еще один пример кода с ограниченными возможностями. http://www.learningsharepoint.com/2010/07/04/programmatically-copy-and-move-documents-in-sharepoint-2010/

И еще пара замечаний. Если вы возьмете счетчик элементов библиотеки и счетчик файлов, то они будут отличаться, т.к. есть еще папки.

Если у вас publishing site, то число видимых элементов будет меньше программного счетчика, т.к. draft элементы могут быть не видны!

Обсуждение на форуме http://social.technet.microsoft.com/Forums/ru-RU/winserverpowershell/thread/a70b30d0-b20b-48a6-b98d-9fa47a95c5ed