нету различной автоматизации ввода в домен, отсутствует установка обновлений во время развертывания, а так же отсутствует возможность подключения к удаленной установке через DaRT. Суть MDT — максимальная автоматизация установки и гибкость изменения\обновления компонентов.
Мы использовали единую базу данных (CMDB) с именами и MAC адресами всех компьютеров организации. С помощью этого модуля был создан скрипт, который по REST api подключается к базе CMDB, берёт список компьютеров с их MAC адресами и заливает их в базу MDT. Скрипт приложу, вдруг кому пригодится (он уродливый и сырой, выкладываю как есть). Он работает через truncate mdt базы — кривое решение и если у вас 1000000 компьютеров, то не сгодится, но с 2000 справляется отлично и быстро.
Есть одно важное различие между деплоем через SCCM и MDT. В MDT это происходит от локальной УЗ администратора, а в SCCM от SYSTEM. Но последние версии SCCM так же можно интегрировать с MDT и использовать в нём MDT task sequence.
Под доменным админом на рабочие станции пользователей? За такое руки надо отрубать (и не только тем, кто ходит, но и тем, кто это допустил). И какая вообще зависимость между LAPS и тем, что люди используют доменного админа где попало?
И вы хотите сказать, что пароли не меняете?
Хорошая, старая штука. Конечно, вызывает некоторые неудобства, но как и вся безопасность тут либо удобнее, либо безопаснее. На вскидку вспомню несколько кейсов.
1. Например, удаление УЗ подменного компьютера из АД, когда подменный компьютер долго не находится в сети. Т.е. стоит в принципе забыть об удалении УЗ компьютеров, только блокировка.
2. После внедрения пришлось подтюнить MDT, чтобы он использовал staging OU, иначе деплой фейлился после очередного обновления GP.
3. Стоит внимательнее относится к политикам паролей, т.е. настроив для LAPS пароли вида «SDFAHO23DFJSSDFK6» необходимо убедиться в том, что локальная политика безопасности даст использовать такие «простые» пароли.
Да в принципе это и не проблемы, просто нюансы, которые сразу вспомнились.
Использование Jump серверов это устаревший метод, так как первоначально вы будете вводить учетные данные от УЗ с повышенными привилегиями на менее защищенном хосте. В современных реалиях подход должен быть в корне другой. Рабочая станция админитратора (ноутбук например) правильно защищенный. Все административные действия производятся с него, а уже внутри него запущена виртуальная машина с интернетом, почтой и тд(это если вообще не отдельный административный ноутбук). И нету в этом никакой паранойи это просто другой подход, не так как все привыкли. Куча паролей лечится грамотным выстраиванием инфраструктуры с использованием современных методов аутентификации. В идеальном мире администратор должен предоставлять пин код от своей смарт карты единожды — при входе на свою адм. станцию, а пользователь свой пароль при входе на свой компьютер. Так же сейчас развивается биометрия, станет еще проще, но не менее безопасней.
кстати бэкапы дедупа это тоже отдельная история. Например DPM, если бэкапить не весь дедуплицированный том, а только несколько папок из него — сначала раздедублицирует данные, а потом их скопирует. Что влечет дополнительный (и иногда весьма не малый) расход ресурсов. Так что я все, что должно бэкапится держу на отдельном томе, что нет — на другом. Тем самым DPM бэкапит и хранит уже дедублицированную информацию.
А вы почитайте на MSDN логику работы дедупа и страх неизвестности уйдет ;) Шанс потерять данные или производительность примерно равен шансу потерять файловую систему. На данный момент есть некоторые баги в управлении, но по стабильности работы и надежности нигде не видел нареканий.
я тоже самое могу сказать и про 70-742, в exam-ref нету и половины материала о котором могут на нем спросить;) О чем они так же пишут «This objective may include but is not limited to». Но надо читать блюпринт по экзамену и быть в курсе всех изменений.
MS как раз начала выпуск Semi-Annual Channel для Server 2016 начиная с версии 1803, т.е. обновления фичей как для 10ки, раз в пол года (LTSC так же осталась). Вообще exam-ref MS не позиционирует как «прочитал-сдал», экзамены MS нацелены на проверку ПРАКТИЧЕСКИХ знаний, а не теории. И экзамен должен проверить не качество усвоения Exam-ref, а то, что человек может в реальных условиях. И об этом они на каждом шагу твердят. Хочешь сдавать экзамены MS — тут практика на первом месте.
Используем ReFS в тех же сценариях. Да, косяки с ОЗУ это бич ReFS. Но MS это признало и вроде как исправит в RS4, так же как и реализовало dedup для ReFS в 1803.
ADFS? Практически все веб приложения, сторонние и собственной разработки с аутентификацией через SAML\oauth2.0+openid, а так же Exchange и office 365.
Stretch Clusters — файловый кластер растянутый между площадками.
S2D — гиперконвергентные кластера Hyper-V
конечно же проще набрать mstsc, ввести логин\пароль, открыть консоль с пользователями, выбрать пользователей и отправить сообщение. Особенно когда у вас 30 RDSH в ферме.
$out =@()
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$Url = "https://otrs.domain.ru/otrs/nph-genericinterface.pl/Webservice/CMDBData/Session"
$Body = @{"UserLogin"="otrs";"Password"="Password"}
$SessionID = ((Invoke-WebRequest -Method Post -Uri $url -Body ($Body|ConvertTo-Json) -ContentType "application/json").content | ConvertFrom-Json).SessionID
$UrlOTRS = "https://otrs.domain.ru/otrs/nph-genericinterface.pl/Webservice/CMDBData/"
$truncate = "truncate table settings
truncate table computeridentity
GO"
Invoke-SQLcmd -ServerInstance 'windeploy\SQLEXPRESS' -query $truncate -Database MDT
Connect-MDTDatabase -sqlServer windeploy.domain.ru -instance SQLEXPRESS -database MDT
$hash = [ordered]@{
ConfigItem = [ordered]@{
Class="ПК";
Number="*"
}
}
$BodySearch = $hash | ConvertTo-Json -Depth 99
$Response = Invoke-WebRequest -Method POST -Uri "https://otrs.domain.ru/otrs/nph-genericinterface.pl/Webservice/CMDBData/CISearch?SessionID=$SessionID" -Body $BodySearch -ContentType "application/json; charset=UTF-8" | ConvertFrom-Json
$ConfigItemIDs = $Response.ConfigItemIDs
#==================Computers
foreach ($item in $ConfigItemIDs)
{
$uri = $UrlOTRS+"CI/"+$item+"?SessionID="+$sessionid;
$jsonresp = Invoke-WebRequest -Method GET $uri -ContentType "application/json; charset=UTF-8" | ConvertFrom-Json
if (($jsonresp.ConfigItem.CIXMLData.MAC -match "[a-zA-Z_0-9]") -and (($jsonresp.ConfigItem.deplstate -like "Operation") -or ($jsonresp.ConfigItem.deplstate -like "Prep") -or ($jsonresp.ConfigItem.deplstate -like "Reserve") -or ($jsonresp.ConfigItem.deplstate -like "Relocation")) )
{
#write-host $jsonresp.ConfigItem.name -ForegroundColor Green
#Write-Host $jsonresp.ConfigItem.CIXMLData.MAC
#Write-Host $jsonresp.ConfigItem.deplstate
$out += $jsonresp
}
}
$machines = $out
For ($i=1; $i -le $machines.count; $i++)
{
$machines[$i-1].ConfigItem.CIXMLData.MAC=$machines[$i-1].ConfigItem.CIXMLData.MAC.ToUpper() -replace '..(?!$)', '$&:'
$macvalid=$TRUE
$temp = $machines[$i-1].ConfigItem.CIXMLData.MAC.Split(":")
if (($temp.count -ne 6) -or ($machines[$i-1].ConfigItem.CIXMLData.MAC.length -ne 17))
{ $macvalid = $FALSE
}
$namevalid=$TRUE
if ($machines[$i-1].ConfigItem.name.length -gt 15)
{ $namevalid=$FALSE
}
if ($namevalid -and $macvalid)
{
$validrecords=$validrecords+1
$machineid=Get-MDTComputer -macAddress $machines[$i-1].ConfigItem.CIXMLData.MAC
if ($machineid.id -gt 0)
{
Remove-MDTComputer $machineid.id
}
$OSDPcName = "PC-" + $machines[$i-1].ConfigItem.number
New-MDTComputer -macAddress $machines[$i-1].ConfigItem.CIXMLData.MAC -description $OSDPcName -settings @{
OSInstall='YES';
OSDComputerName=$OSDPcName;
}
$machineid=Get-MDTComputer -macAddress $machines[$i-1].ConfigItem.CIXMLData.MAC
Set-MDTComputerRole $machineid.id "StandardPC"
}
else
{ #log the invalid record
$invalidrecords=$invalidrecords+1
$text = "Invalid Record : "+$i+" "+$machines[$i-1].mac+" "+$machines[$i-1].name
$text >> $logfile
}
}
#====================Notebooks
Clear-Variable out
$out =@()
$hash = [ordered]@{
ConfigItem = [ordered]@{
Class="Ноутбук";
Number="*"
}
}
$BodySearch = $hash | ConvertTo-Json -Depth 99
$Response = Invoke-WebRequest -Method POST -Uri "https://espp.domain.ru/otrs/nph-genericinterface.pl/Webservice/CMDBData/CISearch?SessionID=$SessionID" -Body $BodySearch -ContentType "application/json; charset=UTF-8" | ConvertFrom-Json
$ConfigItemIDs = $Response.ConfigItemIDs
foreach ($item in $ConfigItemIDs)
{
$uri = $UrlOTRS+"CI/"+$item+"?SessionID="+$sessionid;
$jsonresp = Invoke-WebRequest -Method GET $uri -ContentType "application/json; charset=UTF-8" | ConvertFrom-Json
if ($jsonresp.ConfigItem.CIXMLData.EthMAC -match "[a-zA-Z_0-9]" -and (($jsonresp.ConfigItem.deplstate -like "Operation") -or ($jsonresp.ConfigItem.deplstate -like "Prep") -or ($jsonresp.ConfigItem.deplstate -like "Reserve") -or ($jsonresp.ConfigItem.deplstate -like "Relocation")) )
{
#write-host $jsonresp.ConfigItem.name -ForegroundColor Green
#Write-Host $jsonresp.ConfigItem.CIXMLData.EthMAC
$out += $jsonresp
}
}
#$out | fl
$machines = $out
For ($i=1; $i -le $machines.count; $i++)
{
$machines[$i-1].ConfigItem.CIXMLData.EthMAC=$machines[$i-1].ConfigItem.CIXMLData.EthMAC.ToUpper() -replace '..(?!$)', '$&:'
$macvalid=$TRUE
$temp = $machines[$i-1].ConfigItem.CIXMLData.EthMAC.Split(":")
if (($temp.count -ne 6) -or ($machines[$i-1].ConfigItem.CIXMLData.EthMAC.length -ne 17))
{ $macvalid = $FALSE
}
$namevalid=$TRUE
if ($machines[$i-1].ConfigItem.name.length -gt 15)
{ $namevalid=$FALSE
}
if ($namevalid -and $macvalid)
{
$validrecords=$validrecords+1
$machineid=Get-MDTComputer -macAddress $machines[$i-1].ConfigItem.CIXMLData.EthMAC
if ($machineid.id -gt 0)
{
Remove-MDTComputer $machineid.id
}
$OSDNbName = "NB-" + $machines[$i-1].ConfigItem.number
New-MDTComputer -macAddress $machines[$i-1].ConfigItem.CIXMLData.EthMAC -description $OSDNbName -settings @{
OSInstall='YES';
OSDComputerName=$OSDNbName;
}
$machineid=Get-MDTComputer -macAddress $machines[$i-1].ConfigItem.CIXMLData.EthMAC
Set-MDTComputerRole $machineid.id "StandardPC"
}
else
{ #log the invalid record
#$invalidrecords=$invalidrecords+1
#$text = "Invalid Record : "+$i+" "+$machines[$i-1].mac+" "+$machines[$i-1].name
#$text >> $logfile
}
}
И вы хотите сказать, что пароли не меняете?
1. Например, удаление УЗ подменного компьютера из АД, когда подменный компьютер долго не находится в сети. Т.е. стоит в принципе забыть об удалении УЗ компьютеров, только блокировка.
2. После внедрения пришлось подтюнить MDT, чтобы он использовал staging OU, иначе деплой фейлился после очередного обновления GP.
3. Стоит внимательнее относится к политикам паролей, т.е. настроив для LAPS пароли вида «SDFAHO23DFJSSDFK6» необходимо убедиться в том, что локальная политика безопасности даст использовать такие «простые» пароли.
Да в принципе это и не проблемы, просто нюансы, которые сразу вспомнились.
Боевой файловый сервак, тут все не так радужно)
Stretch Clusters — файловый кластер растянутый между площадками.
S2D — гиперконвергентные кластера Hyper-V