MDT 2010 ошибка обновления каталога развертывания

При попытке обновления каталога развертывания (Deployment Share) процес обновления завершается неудачно, с отображением ошибки:
Unable to mount the WIM, so the update process cannot continue.
Поиск таких ошибок в сети привел к выводу о необходимости проверки версии библиотеки wimgapi.dll, что и было сделано. Однако никаких результатов это не дало. Файлы находились там где и надо, версия – самая последняя на момент проверки. Поэтому было решено пойти другим путем:
Возникла мысль проверить какие на данный момент образы смонтированы командой dism /get-mountedwiminfo. Вывод команды приводить здесь не буду, однако нашелся один смонтированый образ в каталоге C:\Users\username\AppData\Local\Temp\MDTUpdate.1896\Mount. После его отмонтирования процесс обновления завершился без каких-либо ошибок. Расследование почему он остался смонтированым и после каких действий – не проводилось.

Удаление несуществующих устройств

Периодически бывает так, что поменяли сетевую карточку, а попытка переименовать сетевое подключение приводит к неудаче. Происходит это от того, что нес мотря на отсуствие сетевой карточки, она присутствует в системе и присутсвует скрытое сетевое соединение. Для удаления неподключеннх устройств необходимо выполнить следующие команды:
1. Запускаем командную строку в режиме администратора.
2. set devmgr_show_nonpresent_devices=1
cd %SystemRoot%\System32
start devmgmt.msc
3. В диспетчере устройств отмечаем галочку – “Показывать скрытые устройства”.
4. Удаляем все ненужные нам сетеые адаптеры.

Поиск даты последнего входа пользоваеля или компьютера в домен

Для очистки Active Directory от старых пользователей и компьютеров их сначала необходимо найти. найти их просто, дата последнего логина содержится в поле LastLogon. Проблема только в том, что это поле не реплицируется между домен-контролерами и для поиска актуальной даты последнего логина необходимо опросить все домен-контролеры, а затем выбрать самую последнюю дату. Для автоматизации данного процесса, сделан небольшой скрипт на Powershell с использованием GUI, что дает возможность его использовать даже хелпдеску.
Вид окна программы:

Для запуска скрипна необходимо установить расширение для ActiveRoles Management Shell for Active Directory от компании Quest Software. В поле ObjectName вводим имя компьютера или samaccountname пользователя, указываем тип объекта и нажимаем Find и получаем дату последнего входа.

Скрипт брать тут.

Активация агента удаленного управления SCCM 2007

Бывает так, что по той или иной причине подключиться удаленному компьютеру средствами SCCM невозможно по причине деактивированного агента удаленного управления. Можно ждать пока дойдут политики и он включится, а можно активировать его сразу, исправив параметр в реестре.

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SMS\Client\Client Components\Remote Control]
“Enabled”=dword:00000001

Принудительная очистка базы аудита в SCOM 2007

К сожалению место на дисках имеет свойство заканчиваться. Сервер аудита (Audit Collection Server) хранит все в базе данные, неправильный прогноз размера базы данных приводит к тому, что в один прекрасный день место на диске заканчивается и сервер аудита фактически прекращает работать. Количество дней, за которые хранятся записи в базе аудита, настраивается очень просто, при помощи такого запроса:

USE OperationsManagerAC
UPDATE dtConfig
SET Value = <number of days to retain data + 1>
WHERE Id = 6

Но сделать такие настройки мало, необходимо еще и удалить ненужные данные. Можно конечно дождаться пока данные будут удалены автоматически, но лучше это сделать сразу для возобновления нормальной работы. Для этого необходимо открыть SQL запрос, находящийся в папке \\ACS\%SystemRoot%\System32\Security\AdtServer\DbDeletePartition.sql и заменить строку “!g!” на id раздела, который необходимо удалить. id раздела можно получить, выполнив такой запрос:

SELECT *
FROM dtPartition
ORDER BY PartitionCloseTime

Выбираем самый старый раздел и используем его ID для удаления.

Синхронизация групп в Active Directory

Иногда неоходимо синхронизировать 2 группы в Active Directiory таким обраом, чтоб изменения состава пользователей одной группы, автоматически изменяло состав пользователей другой группы. Зачем это уже отдельный вопрос и тут не рассматривается. Для этого поможет небольшой скрипт. Для запуска скрипна необходимо установить расширение для ActiveRoles Management Shell for Active Directory от компании Quest Software. А затем воспользоваться таким небольшим скриптом:

Add-PSSnapin Quest.ActiveRoles.ADManagement
$in = (get-qadgroup ‘tstgroupin’).dn
$out = (get-qadgroup ‘tstgroupout’).dn
$ingroupmembers = get-qadgroupmember $in
$outgroupmembers = get-qadgroupmember $out
$rez = compare-object $ingroupmembers $outgroupmembers
foreach($item in $rez){
if ($item.SideIndicator -eq “<=”){
$usrdn = (get-qaduser $item.InputObject).dn
if ($userdn -ne $null){add-qadgroupmember $out -Member $usrdn}
}
if ($item.SideIndicator -eq “=>”){
$usrdn = (get-qaduser $item.InputObject).dn
if ($userdn -ne $null){remove-qadgroupmember $out -Member $usrdn}
} �
}

Скрипт изменяет состав пользователей группы tstgroupout в соответствии с составом пользователей группы tstgroupin. Можно конечно удалить всех и добавить нужных, но это повлечет за собой изменение (хоть и кратковременное) членства в группах пользователей, у которых ничего не изменялось. Кроме того метод “удалить всех и добавить нужных” создаст в журнале безопасности множество лишней информации по изменению членства в группах, которая будет являться недостоверной.

Существует возможность сделать тоже самое что называется из коробки, без использования компонентов от Quest Software. В этом случае скрипт выглядит так:

function get-groupdn ($SAMName)
{
$root = [ADSI]”
$searcher = new-object System.DirectoryServices.DirectorySearcher($root)
$searcher.filter = “(&(objectClass=group)(sAMAccountName= $SAMName))”
$user = $searcher.findall(
if ($user.count -gt 1)
{
$count = 0
foreach($i in $user)
{
write-host $count “: ” $i.path
$count = $count + 1
}
$selection = Read-Host “Please select item: ”
return $user[$selection].path
}
else
{
return $user[0].path
}
}

function get-userdn ($SAMName)
{
$root = [ADSI]”
$searcher = new-object System.DirectoryServices.DirectorySearcher($root)
$searcher.filter = “(&(objectClass=user)(sAMAccountName= $SAMName))”
$user = $searcher.findall(
if ($user.count -gt 1)
{
$count = 0
foreach($i in $user)
{
write-host $count “: ” $i.path
$count = $count + 1
}
$selection = Read-Host “Please select item: ”
return $user[$selection].path
}
else
{
return $user[0].path
}
}

$ingroup = get-groupdn ‘tstgroupin’
$outgroup = get-groupdn ‘tstgroupout’
if ($ingroup -ne $null){
$GroupLDAPin = [adsi]$ingroup
}
if ($outgroup -ne $null){
$GroupLDAPout = [adsi]$outgroup
}
if (($GroupLDAPout -ne $null) -and ($GroupLDAPin -ne $null)){
$rez = compare-object $GroupLDAPin.member $GroupLDAPout.member
foreach($item in $rez){
if ($item.SideIndicator -eq “<=”){
write-host “LDAP://” + [string]$item.InputObject
$GroupLDAPout.Add(“LDAP://”+$item.InputObject)
}
if ($item.SideIndicator -eq “=>”){
write-host “LDAP://” + [string]$item.InputObject
$GroupLDAPout.Remove(“LDAP://”+$item.InputObject)
}
}
}

Разрешение определенных ActiveX только на определенных сайтах

Кому из Вас не надоедала FLASH реклама. Избавиться от нее достаточно просто, достаточно не устанавливать ActiveX компонент, который за воспроизведение отвечает или отключить его. Но на том же YouTube смотреть видео ве-таки хочется. В Internet Explorer 8 (на других не проверял) можно указать какому компоненту на каких сайтах можно работать. В меню идем по пути Tools->Internet Options->Programs->Manage add-ons. В списке находим например Shokwave Flash Object и выбираем его. Далее либо жмем More Information либо щелкаем правой кнопкой мыши по выбраному объекту и опять же выбираем More Information. В свойствах нас интересует Class ID выбранного объекта.

Хоть в свойствах и есть список сайтов, на которых мы можем разрешить выполнение указанного ActiveX, но инструментов для редактирования списка нет.
Для внесения изменений в список создаем файлик следующего содержания:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Ext\Stats\{D27CDB6E-AE6D-11CF-96B8-444553540000}\iexplore\AllowedDomains]
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Ext\Stats\{D27CDB6E-AE6D-11CF-96B8-444553540000}\iexplore\AllowedDomains\vkontakte.ru]
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Ext\Stats\{D27CDB6E-AE6D-11CF-96B8-444553540000}\iexplore\AllowedDomains\forum.od.ua]
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Ext\Stats\{D27CDB6E-AE6D-11CF-96B8-444553540000}\iexplore\AllowedDomains\www.youtube.com]

Сохраняем его под любым именем с расширением reg и импортируем этот файл в реестр.

Пример файлика вот

Заходим в свойства объекта, как приведено выше и видим, что компонент может запускаться только на указанных сайтах

Быстрые клавиши командной строки и Powershell

Может конечно написаное ниже для кого-то секретом не является, но я это обнаружил чисто случайно. Прогоняя попугая с клавиатуры случайно нажал F7, активным окном была командная строка. К моему удивлению отобразилась история команд. Выглядит это так:

Быстрый поиск привел на сайт http://technet.microsoft.com/en-us/library/ee176868.aspx, который говорит о том, что эта и некоторые другие быстрые клавиши также работают и в консоли powershell.

Некоторые команды Cisco

В связи с тем, что Cisco я конфигурирую не так часто, то многое забываю. Так пара команд для себя, чтоб не зыбать.

Включение вывода на терминал: terminal monitor
Отключение вывода на терминал: terminal no monitor
Отключение debug: no debug all

Прокидывание порта во внутрь сети:

ip nat inside source static tcp ipip intport extip extport extendable