13 ноября 2013 г.

Lync 2013 + windows 8.1 + Office Web Apps 2013 не открывается презентация PowerPoint (PowerPoint sharing on Windows 8.1 does not work - Sorry, we ran into a problem displaying the presentation. Please try again.)


Сегодня вышли долгожданные обновления для решения данной проблемы.

Description of the Office Web Apps Server 2013 update 2837634: November 12, 2013 - http://support.microsoft.com/kb/2837634
Description of the Lync 2013 update 15.0.4551.1005: November 7, 2013 - http://support.microsoft.com/kb/2825630


Обязательно для изучения перед обновлением Apply software updates to Office Web Apps Server

20 сентября 2013 г.

Outlook 2010 подключеннный к Exchange постоянно запускается в автономном режиме.


Непонятно в какой момент Outlook стал запускаться постоянно в автономном режиме. Постоянное переключение из Offline в Online естественно раздражает.
Изменение настроек подключения так же ни к чему не приводили.

Решение:
Оказывается, если у Вас установлен какой либо мессенджер, в моем случае Lync 2010 то он держит соединение с эксченджем и не дает менять определенные параметры. Для решения проблемы нужно выключить Lync, выставить нужные параметры соединения в оутлуке и его перезапустить.



 

Не стартует сервис Lync Front-End 2013 на Windows Server 2012

После  перезагрузки Front-End сервера Lync 2013 не стартовала служба  "сервер  переднего плана Lync Server" (Lync Front-End Server). В логах были замечены следующие события:

EN-US:
Event ID: 30988
Source: LS User Services
Description:
Sending HTTPS request failed. Server functionality will be affected if messages are failing consistently.

Sending the message to https://URL.contoso.com:444/LiveServer/Replication failed. IP Address is 192.111.1.1. Error code is 2EFE. Content-Type is application/replication+xml. Http Error Code is 0.

RU-RU
Event ID: 30988
Source: LS User Services
Description:
Не удалось отправить HTTP-запрос. Если сбой повторяется каждый раз, это повлияет на работу функций сервера.

Не удалось отправить сообщение https://URL.contoso.com:444/LiveServer/Replication . IP-адрес: 192.168.1.9. Код ошибки: 2EFE. Тип содержимого: application/replication+xml. Код ошибки Http: 0.

Вспомнив что в последнее время делалось на сервере, а именно установка внешних сертификатов от Comodo, поиски привели к следующей статье: http://support.microsoft.com/kb/2795828/en-us

Вкратце суть:
Вместе с сертификатом в комплекте идут два корневых. В одном из них не совпадают имена
Subject и Issuer.
Такие сертификаты должны располагаться не в хранилище  "Доверенные корневые сертификаты" (Trusted Root Certification Authorities) а в хранилище "Промежуточные центры сертификации" (Intermediate Certification Authorities)

Для упрощения поиска таких сертификатов можно использовать следующую команду на Powershell:
Get-Childitem cert:\LocalMachine\root -Recurse | Where-Object {$_.Issuer -ne $_.Subject} | Format-List * | Out-File "c:\computer_filtered.txt"

После приведения в порядок расположение сертификатов по хранилищам  и перезагрузки Lync Server 2013, все службы стартанули в штатном режиме.


 

10 июля 2013 г.

Исправление Warning "Inbound authentication failed with error LogonDenied for Receive connector Client Frontend" от MSExchangeFrontEndTransport

Проблема:

В журнале приложений CAS01 фиксируются предупреждения вида:

Log Name:      Application
Source:        MSExchangeFrontEndTransport
Date:          09.07.2013 15:24:02
Event ID:      1035
Task Category: SmtpReceive
Level:         Warning
Keywords:      Classic
User:          N/A
Computer:      CAS01.domain.com
Description:
Inbound authentication failed with error LogonDenied for Receive connector Client Frontend CAS01. The authentication mechanism is Login. The source IP address of the client who tried to authenticate to Microsoft Exchange is [127.0.0.1].
Event Xml:
< Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="MSExchangeFrontEndTransport" />
    <EventID Qualifiers="32772">1035</EventID>
    <Level>3</Level>
    <Task>1</Task>
    <Keywords>0x80000000000000</Keywords>
    <TimeCreated SystemTime="2013-07-09T11:24:02.000000000Z" />
    <EventRecordID>164696</EventRecordID>
    <Channel>Application</Channel>
    <Computer>CAS01.domain.com</Computer>
    <Security />
  </System>
  <EventData>
    <Data>LogonDenied</Data>
    <Data>Client Frontend CAS01</Data>
    <Data>Login</Data>
    <Data>127.0.0.1</Data>
  </EventData>
< /Event>


При этом в журнале "\\cas01\c$\Program Files\Microsoft\Exchange Server\V15\TransportRoles\Logs\FrontEnd\ProtocolLog\SmtpReceive\" фиксируются записи вида:


CAS01,08D04A98B8FDD36A,42,127.0.0.1:587,127.0.0.1:41112,*,,Inbound AUTH LOGIN failed because of LogonDenied 2013-07-09T11:24:03.000Z,CAS01\Client Frontend CAS01,08D04A98B8FDD36A,43,127.0.0.1:587,127.0.0.1:41112,*,,User Name: HealthMailbox896e040d888546a48194fb00dd245648@domain.com


Решение:

Вывести список всех ящиков HealthMonitor'ов по команде powershell-консоли Exchange на сервере CAS01:

PS> Get-Mailbox -Monitoring 

Удалить все эти ящики:

PS> Get-Mailbox -Monitoring | Remove-Mailbox

При этом выбрать вариант  "[A] Yes to All".

При запуске командлета могут появляться ошибки вида:


Active Directory operation failed on server.domain.com. This error is not retriable. Additional information: Access is denied.
Active directory response: 00000005: SecErr: DSID-031520C3, problem 4003 (INSUFF_ACCESS_RIGHTS), data 0
    + CategoryInfo          : NotSpecified: (:) [Remove-Mailbox], ADOperationException
    + FullyQualifiedErrorId : 7C60F97C,Microsoft.Exchange.Management.RecipientTasks.RemoveMailbox
    + PSComputerName        : cas01.domain.com

  
Проверить оставшиеся ящики:

PS> Get-Mailbox -Monitoring

Найти в AD учётную запись (или записи), соответствующую имени оставшегося ящика HealthMonitor'а, и проверить, что в её свойствах в разделе "Profile" -> "Security" -> "Advanced" предлагается только отключить наследование прав (Disable inheritance). Если же предлагается наоборот включить наследование, то включить наследование.

Ещё раз выполнить удаление ящиков:

PS> Get-Mailbox -Monitoring | Remove-Mailbox

Проверить оставшиеся ящики:

PS> Get-Mailbox -Monitoring
Даже если какие-то ящики остались, перезапустить службу "MSExchangeHM" (Microsoft Exchange Health Manager) на всех серверах: CAS01, MBX01, MBX02.

Кое-что по теме: 

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"