Автоматически отправлять приветственное письмо всем новым учетным записям

У меня есть Exchange Server 2010 Enterprise Edition на Windows Server 2008 R2 Enterprise Edition x64. Мой вопрос;

Я пытаюсь сделать настройки на http://www.ucblogs.net/blogs/exchange/archive/2010/03/23/Automatically-sending-a-_2700_Welcome_2700_-email-to-all-new-user-accounts.aspx не работает. Кроме того, он дает мне следующий результат при работе сценария PowerShell

(New-ReceiveConnector -Name "Internal Relay" -Bindings 0.0.0.0:25 -RemoteIPRanges 127.0.0.1 -AuthMechanism None -Enabled $true -Fqdn "myserver.mydomain.com" -PermissionGroups AnonymousUsers -Server mysever | Add-ADPermission -User "NT AUTHORITY\ANONYMOUS LOGON" -ExtendedRights "ms-Exch-SMTP-Accept-Any-Recipient")

Identity        User                Deny          Inherited 
  AAAa\bbb   NT AUTHORITY\ANON...   False          False

В приведенной выше команде "Расширенные права" нет информации.

Какие-либо предложения?

$strScriptName =  $MyInvocation.MyCommand.Name
if (!(Get-ItemProperty HKLM:\Software\Innervation\$strScriptName -Name LastRun -EA SilentlyContinue)){

    # this is the first time the script has run - let's create the registry key and value for future runs
    New-Item -path HKLM:\Software\Innervation -EA SilentlyContinue | Out-Null
    New-Item -path HKLM:\Software\Innervation\$strScriptName | Out-Null
    New-ItemProperty -path HKLM:\Software\Innervation\$strScriptName -Name "LastRun" -Value (Get-Date) -propertyType String | Out-Null
    write-host "Initial configuration completed." -ForegroundColor green

}

# get time stamp from registry so we know when it last ran
$LastRun = Get-Date ((Get-ItemProperty -path HKLM:\Software\Innervation\$strScriptName -Name LastRun).LastRun)
$ElapsedTime = ((Get-Date) - $lastrun).TotalSeconds

$MBXArray = @(Get-Mailbox  -ResultSize Unlimited | ? {($_.WhenCreated -gt (Get-Date).AddSeconds(-$ElapsedTime)) -and ($_.ExchangeUserAccountControl -ne "AccountDisabled")})


ForEach ($mailbox in $MBXArray ) {
$strMsgTo = $mailbox.PrimarySMTPAddress

$strMsgBody = "Hello, "+$mailbox.DisplayName+", and welcome to the Contoso family! Please keep this email for future use. It contains vital information.
$SMTPClient.Send($strMsgFrom,$strMsgTo,$strMsgTitle,$strMsgBody) 
}
# update registry here with a fresh time stamp
Set-ItemProperty HKLM:\Software\Innervation\$strScriptName -Name "LastRun" -Value (Get-Date) | Out-Null

Вышеупомянутая команда powershell не работает в системе, в которой установлен Exchange Server 2010 Enterprise Edition. После того, как он работает, он дает мне следующую ошибку.

HKLM:\Software\Innervation   registry key not valid.   

Как сделать совместимым с Exchange Server 2010 эту команду PowerShell?

Ура,

Надеюсь вскоре увидеть вашего эксперта. Заранее спасибо.

Приветствия.

1 ответ

Решение

Я использую этот скрипт с Exchange 2010, но мне пришлось сделать несколько небольших изменений. Также убедитесь, что вы запускаете это с одного из серверов cass. Прежде всего измените PSSnapin для загрузки модуля Exchange 2010.

“   if (-not((Get-PSSnapin) -match "Microsoft.Exchange.Management.PowerShell.E2010")){ Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010 }   ”
Next, edit the $SMTPClient to match this line- “   $SMTPClient = New-Object Net.Mail.SmtpClient("127.0.0.1")  “

После настройки сценария запустите этот раздел команды, чтобы создать ключ reg.

##########################BEGIN####################
$strScriptName = $MyInvocation.MyCommand.Name
if (!(Get-ItemProperty HKLM:\Software\Innervation\$strScriptName -Name LastRun -EA SilentlyContinue)){
    # this is the first time the script has run - let's create the registry key and value for future runs
    New-Item -path HKLM:\Software\Innervation -EA SilentlyContinue | Out-Null
    New-Item -path HKLM:\Software\Innervation\$strScriptName | Out-Null
    New-ItemProperty -path HKLM:\Software\Innervation\$strScriptName -Name "LastRun" -Value (Get-Date) -propertyType String | Out-Null
    write-host "Initial configuration completed." -ForegroundColor green
}
# get time stamp from registry so we know when it last ran
$LastRun = Get-Date ((Get-ItemProperty -path HKLM:\Software\Innervation\$strScriptName -Name LastRun).LastRun)
$ElapsedTime = ((Get-Date) - $lastrun).TotalSeconds
######################END####################################

Затем закомментируйте последнюю строку в целях тестирования.

#########################BEGIN###############################
Set-ItemProperty HKLM:\Software\Innervation\$strScriptName -Name "LastRun" -Value (Get-Date) | Out-Null
######################END#######################

Создайте новую учетную запись пользователя и протестируйте свой сценарий, пока не будете довольны. После того, как это работает как задумано, удалите комментарий.

@Toshana

Другие вопросы по тегам