Опубликовано 11.05.2010 ¬ 09:44h.admin
Из разряда – заметки на память.
Разрешения по умолчанию на папку ExchangeOAB (генерация) для Exchange 2007
Путь x:\Program Files\Microsoft\Exchange Server\ExchangeOAB
Заметка: Если папку удалить то процесс OABGen создаст ее заново
На папку устанавливаются следующие разрешения:
- SYSTEM – Full Control
- Administrators – Full Control
- Exchange Servers:
Traverse Folder
List Folder
Read Attributes
Read Extended Attributes
Read Permissions
наследование для контейнера (папки и подпапки)
- Exchange Servers:
Read Data
Read Attributes
Read Extended Attributes
Read Permissions
наследование для контейнера и объектов (папки, подпапки и файлы)
Разрешения по умолчанию на папку OAB (публикация) для Exchange 2007
Путь x:\Program Files\Microsoft\Exchange Server\ClientAccess\OAB
На папку устанавливаются следующие разрешения:
- SYSTEM – Full Control
наследование для контейнера и объектов (папки, подпапки и файлы)
- Administrators – Full Control
наследование для контейнера и объектов (папки, подпапки и файлы)
- IIS_IUSR:
Traverse folder / execute files
List folder / Read Data
Read Attributes
Read Extended Attributes
Read Permissions
наследование только для этой папки
Опубликовано 29.04.2010 ¬ 09:49h.admin

При работе с файловыми ресурсами мой самый нелюбимый процесс это документирование существующих разрешений на папки и анализ того что было и что стало.
Иначе выражаясь проведение аудита не тот процесс который мне нравиться и надо каким то образом было упростить это действо.
По старой традиции на помощь приходит powershell.
Кратко о скрипте.
В переменной $folder задается имя анализируемой папки, далее производится анализ всех дочерних папок и результат пишется в файл D:\Reports\FolderReport.csv
# get-FolderPermissions.ps1
$folder = "\\FILESRV-01\ShareName\"
$in = Get-ChildItem $folder | where {$_.extension -eq ""}
$result = foreach($res in $in) {
$s = get-acl $res.fullname
foreach($inherit in $s.Access) {
$inherit | add-member -membertype noteproperty -name Path -value $res.fullname -passthru |
select Path, IsInherited, IdentityReference, filesystemrights
}
}
$result | Export-Csv -Encoding "Unicode" -Path "D:\Reports\FolderReport.csv" -Delimiter ","
Несколько расширенный второй вариант скрипта, отличие от первого в том что список папок он берет из файла folders.txt и затем создает csv-отчеты в папке $reportFolder
# get-FoldersPermissions2.ps1
$folders = Get-Content "folders.txt"
$reportFolder = "D:\Reports\"
foreach ($folder in $folders) {
$source = Get-ChildItem $folder | where {$_.extension -eq ""}
$result = foreach($res in $source) {
$s = Get-Acl $res.fullname
foreach($inherit in $s.Access) {
$inherit | Add-Member -membertype noteproperty -name Path -value $res.fullname -passthru | Select Path, IsInherited, IdentityReference, filesystemrights
}
}
$logName = $folder.Replace("\", "_")
$logName = $LogName.Replace(":", "")
$result | Export-Csv -Encoding "Unicode" -Path "$($reportFolder)report_$logName.csv" -Delimiter ","
}
Надеюсь что предложенный инструмент будет вам полезен.
Комментарии и замечания приветствуются.
Опубликовано 26.04.2010 ¬ 13:50h.admin

Серверный парк растет, вместе с ним плодится неимоверное количество заданий которые запущены из под разных пользователей, созданы различными администраторами и у вас нет четкого понимания
- где
- что
- как отработало
На ручную проверку нет времени и хочется хоть какой то автоматизации процесса.
Давайте посмотрим как можно облегчить поставленную задачу.
Первым шагом создаем файл со списком хостов.
SRV01
SRV02
SRV03
...
Далее, формируем файл get-SheduledTask.ps1 и методом «скопировать-вставить» наполняем его содержимым представленным ниже.
# get-SheduledTask.ps1
Clear
-Host
$servers = Get-Content "hostlist.txt"
$srvcount = (get-content "hostlist.txt" | Measure-Object -property length
-Line)
write-host "Number of Servers to Check: " $srvcount.Lines
$COUNT = 0
foreach ($server in $servers) {
write-progress -activity "Check Scheduled tasks." -status "Percent complete: " -percentComplete (($COUNT / $srvcount.Lines) * 100)
$ping = new-object System.Net.NetworkInformation.Ping
$Reply = $ping.send($server)
if ($Reply.status –eq "Success") {
write-host "Online -" $server
$COUNT=$COUNT+1
if ($COUNT -eq 1) {
schtasks /query /FO CSV /V /S $server | Out-File "SchedTaskTemp.csv"
} else {
schtasks /query /NH /FO CSV /V /S $server | Out-File -append "SchedTaskTemp.csv"
}
} else {
write-host "Offline -" $server
}
$Reply = ""
}
Import-Csv "SchedTaskTemp.csv" | Where-Object {$_."Last Result" -ne 0} | Format-Table Hostname,TaskName,"Run As User","Last Run Time","Last Result" | Out-File report.txt
Алгоритм работы скрипта простой:
- из файла hostlist.txt извлекается список серверов подлежащих проверке.
- проверяется доступность сервера
- при помощи команды schtasks /query с сервера берется список заданий и помещается в файл SchedTaskTemp.csv
Примечание: Стоит отметить что данный скрипт корректно работает только под Windows XP или под Windows Server 2003 по причине того что Vista и Win7 распознают строку schtasks /query /NH /FO CSV /V /S $server как некорректную. Немного позже постараюсь адаптировать скрипт для всех систем.
Надеюсь что описанный инструмент поможет вам в работе.
Комментарии и замечания приветствуются.
Опубликовано 20.04.2010 ¬ 11:37h.admin

Вылез из офиса на улицу, а там довольно милая картинка.
Опубликовано 17.04.2010 ¬ 09:33h.admin

Многие уже познакомились сначала с релиз-кандидатом от Office 2010 и затем с Бетой.
В блоге команды разработчиков Office 2010 размещена отличная новость.
Для обладателей Volume License с Software Assurance (SA) продукт станет доступен для скачивания 27 апреля. Те кто не имеет SA смогут приобрести продукт у партнеров начиная с первого мая.