22 ноября 2012 г.

Автоматизация поднятия первого контроллера домена

Как говорится -  лень двигатель прогресса. И только благодаря этому появился у меня скрипт который через Powershell поднимает роль контроллера домена, добавляет новых пользователей, подразделения, перемещает пользователей в нужные OU, создает группы безопасности и в них же с добавляет пользователей.

# Имя модуля: ADDS-Domain-Controller.ps1 (Add Domain Services on windows server 2008R2)
#          Создан: 29 апреля 2011 год.
#      Описание: Добавление доменных служб на windows Server 2008 R2 с
#      созданием дочерних OU, груп безопасности и пользователей в них. Наименование OU, SecurityGroup берется из поля OU
# Предвариетельные действия: Для успешного выполнения скрипта запускаем из командной строки PowerShell
# Set-ExecutionPolicy RemoteSigned -force с правами Администратора   или
# Set-ExecutionPolicy unrestricted -force с правами Администратора
#
# Формат входного csv в кодовой странице UTF-8:
#       Name,SamAccountName,UserPrincipalName,GivenName,Surname,DisplayName,OU,Department,Title,Office,OfficePhone
#       "Евдокимов Михаил Борисович","EvdokimovM","EvdokimovM","Михаил","Евдокимов","Евдокимов Михаил Борисович","АУП","Аппарат управления","Председатель КСП","509","285-682"
#
#
#Объявляем переменные
$Password = "
P@ssw0rd"
$ADForestPrep = Get-ADForest
$ADRootDSEPrep = Get-ADRootDSE
$ADForestSfx = "@" + $ADForestPrep.name
$ADRootDSEName = $ADRootDSEPrep.defaultNamingContext


$UsrDB = Import-Csv "C:\KSP scripts\Users.csv" | select Name, SamAccountName, UserPrincipalName, GivenName, Surname, DisplayName,OU,Department,Title,Office,OfficePhone -unique
$OuDB =  Import-Csv "C:\KSP scripts\Users.csv" | select OU -unique
$GroupDB =  Import-Csv "C:\KSP scripts\Users.csv" | select OU -unique
 <#
  # Добавляем роль доменных служб
    Add-WindowsFeature –Name ADDS-Domain-Controller –IncludeAllSubFeature
  #Повышаем сервер до уровня контроллера домена
    Dcpromo /unattend /InstallDNS:Yes /dnsOnNetwork:Yes /ReplicaOrNewDomain:Domain /NewDomain:Forest /NewDomainDNSName:ksp.local /DomainNetBiosName:ksp /DatabasePath:"C:\Windows\NTDS" /LogPath:"C:\Windows\NTDS" /SysvolPath:"C:\Windows\SYSVOL” /safeModeAdminPassword:P@ssw0rd /ForestLevel:4 /DomainLevel:4 /RebootOnCompletion:No
 #>


 Function Add-OU {
  process {
   New-ADOrganizationalUnit -Name $_.OU -Path $ADRootDSEName
       Write-host "Added OU $($_.OU)" -ForegroundColor Green}


}
 function Add-User {
  process {
   New-ADUser  -name $_.Name -SamAccountName $_.SamAccountName  -UserPrincipalName "$($_.UserPrincipalName + $AdForestSfx)"  -GivenName $_.GivenName -Surname $_.Surname -DisplayName $_.DisplayName  -Path "OU=$($_.OU),$($ADRootDSEName)" -Department $_.Department -Title $_.Title -Office $_.Office -OfficePhone $_.OfficePhone -Enabled $true -AccountPassword (ConvertTo-SecureString -AsPlainText $Password -Force) -ChangePasswordAtLogon $true
        Write-host "Added User $($_.name) to $($_.OU)" -ForegroundColor Green
  }
 }

 Function Add-Group {
 process {
   New-ADGroup -Name $_.OU -DisplayName $_.OU -Path "OU=$($_.OU),$($ADRootDSEName)" -GroupCategory  Security -GroupScope Global
     Write-host "Added SecurityGroupGroup $($_.OU)" -ForegroundColor Green
  }
 }

 Function Add-GroupUser{
 process {
   Add-ADGroupMember  -Identity "CN=$($_.OU),OU=$($_.OU),$($ADRootDSEName)" -Members "CN=$($_.Name),OU=$($_.OU),$($ADRootDSEName)"
    Write-host "Added Users  $($_.Name) to SecurityGroup $($_.OU)"  -ForegroundColor Green
 
  }
 }


# Добавляем OU
  $OuDB | Add-OU $_
# Создаем пользователей и добавляем в нужные OU

 $UsrDB | Add-User $_

#Создаем группу безопасности глобальную в домене
 $GroupDB | Add-Group $_

#Добавляем пользователей в группы безопасности по отделам
 $UsrDB | Add-GroupUser $_



29 сентября 2012 г.

Аудит печати. Как узнать кто когда и сколько напечатал?

Как то меня спросили а можно ли средствами самой  Windows узнать кто сколько откуда и что напечатал. Немного подумав решил эту задачу с помощью простенького скрипта на PowerShell.
Грубо говоря он отбирает события в Event Log = 307 в котором есть все необходимые для меня данные.

Скрипт:

cls
$CurrentDate = Get-date 
$date = $CurrentDate.AddDays(-1) 
$yesterday = ($CurrentDate) - (new-timespan -day 1)
$a = "<style>"
$a = $a + "BODY{background-color:peachpuff;}"
$a = $a + "TABLE{border-width: 1px;border-style: solid;border-color: black;border-collapse: collapse;}"
$a = $a + "TH{border-width: 1px;padding: 0px;border-style: solid;border-color: black;background-color:thistle}"
$a = $a + "TD{border-width: 1px;padding: 0px;border-style: solid;border-color: black;background-color:PaleGoldenrod}"
$a = $a + "</style>"
$EventLog = get-winevent -logname "Microsoft-Windows-PrintService/Operational" | Select UserID, TimeCreated, UserName, MachineName, Message, ID
$EventLog | ForEach-Object {
$_.UserName = $_.UserID.Translate([security.principal.ntaccount])

        }
 
 $EventLog | sort-object -property UserName,TimeCreated  | where {$_.ID -eq "307"} | where {$_.timecreated -ge $yesterday}  | ConvertTo-Html -head $a -body "<H2>PrintService</H2>" -As TABLE -Property TimeCreated, UserName, MachineName, Message |  Out-File -FilePath "C:\PRNLOG\$($yesterday.ToString("yyyyMMdd")).html"

Lync 2010 на новых ПК - пользователи не могут авторизоваться

После последнего обновления Lync Server CU 5 заметил что новые пользователи не могут аутентифицироваться в клиенте Lync. Все мои попытки самостоятельно решить данную проблему не увенчались успехом. Естественно я обратился к своим коллегам так же обитающим на форумах Technet. Описывать тут ее не буду, т.к. на форуме всё написано как мы выуживали корень нашей проблемы.
Вкратце о решении: Все мои проблемы были из за протокола Kerberos и разношерстности контроллеров домена у меня в инфраструктуре. Как только избавился от последнего контроллера на server 2003 все проблемы решились.

Remote Desktop Gatawey + Server 2012 + SmartCard

Настройка шлюза терминалов со стандартными настройками особо не вызывает проблем, но столкнулся с одной особенностью. При попытке аутентифицироваться  через смарткарты ничего не получалось. Так же было замечено что сертификат выданный мне центром сертификации расположенном на сервере 2003 определяется на server 2012 и windows 8 некорректно.

Решение:
Оказывается что в шаблоне сертификата SmartCard по умолчанию стоит ключ шифрования RSA (512), увеличил до 1024, перевыпустил. На новых ОС стал определяться корректно. И естественно заработала аутентификация через смарт карты.

Обсуждение на TechNet

Не было возможности записать ISO образы в Windows Server Datacenter 2012


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

P.S. Я очень много времени провожу на Форумах Technet и описываю неясные для меня вещи. В конце каждого из поста буду оставлять ссылку на обсуждение если таковая имеется:
Не доступна функция записи образов ISO

10 июля 2012 г.

First

Последнее время в голове беспорядочно вертится такое колличество полезной и бесполезной для меня информации, что решил все это упорядочить в маленьких заметках. И мне хорошо, и голове неплохо :-)