Carpe Diem: Flaphead.com 

Twitter Gplus LinkedIn RSS
 
 
 
 
formats

Exchange 2010 Personal Archive & Enterprise Vault 10

#exchange2010

Interesting:

Q) Can Enterprise Vault 10 archive email that is stored an Exchange 2010 Personal Archive?

A) There is currently no capability of archiving content from the Exchange 2010 Personal Archive to Enterprise Vault. The user can either restore the content to their mailbox or if using Virtual Vault and the users ability to add content to the archive via Virtual Vault is enabled then they can drag from the personal archive directly to Virtual Vault. The caveat being that Virtual Vault is not really optimised for upload so should only really be used for small numbers of items.

 
formats

Virtualized Exchange Storage: VMDK or RDM or…?

#Exchange #Exchange2010 #vmware

Matt sent me this .. an Interesting read

http://blogs.vmware.com/apps/2011/11/virtualized-exchange-storage-vmdk-or-rdm-or.html

One of the hottest topics I get into when talking to customers about virtualizing Exchange is storage. Not surprising considering the number of options available when we virtualize Exchange on vSphere. If you are not familiar with the common methods for provisioning storage in vSphere a brief description of each follows:

  • VMFS based virtual disk (VMDK) – VMFS is a high performance, clustered file system that allows concurrent access by multiple hosts to files on a shared volume. VMFS offers high I/O capabilities for virtual machines and is optimized for large VMDK files. VMFS volumes can be Fibre Channel or iSCSI attached.
  • Raw-device mappings (RDM) – RDM is a mapping file in a VMFS volume that acts as a proxy for a raw physical device, sometimes called a pass-thru disk. The RDM file contains metadata used to manage and redirect disk access to the physical device. RDMs can be Fibre Channel or iSCSI attached.

In early versions of ESX the virtualization overhead associated with deploying virtual disks (VMDK files) was much higher than it is today and why it was considered a best practice to place Exchange data files on physical mode raw-device mappings (RDM). As ESX and vSphere have evolved the performance difference between RDMs and virtual disks has become almost nonexistent. This leaves some questioning why we might choose to deploy RDMs for Exchange storage.

… “

 
formats

New-MoveRequest Fails at 95%

#Exchange2010 #Exchange

I had a single mailbox, that I could not move from Exchange 2003 to Exchange 2010.  It moved from 2003 to another 2003 database no problem, but 2003 to 2010 no chance.

From the MoveRequest Log you could see this at the end:

12/10/2011 1:04:36 AM [CAS] Fatal error UpdateMovedMailboxPermanentException has occurred.
Error details: An error occurred while updating a user object after the move operation. –> Active Directory operation failed on MyDC. One or more attribute entries of the object ‘BadUser’ already exists. –> The attribute exists or the value has been assigned.
   at Microsoft.Exchange.MailboxReplicationService.LocalMailbox.Microsoft.Exchange.MailboxReplicationService.IMailbox.UpdateMovedMailbox(UpdateMovedMailboxOperation op, ADUser remoteRecipientData, String domainController, ReportEntry[]& entries, Guid newDatabaseGuid, Guid newArchiveDatabaseGuid, String archiveDomain, ArchiveStatusFlags archiveStatus)
   at Microsoft.Exchange.MailboxReplicationService.MailboxWrapper.<>c__DisplayClass3c.<Microsoft.Exchange.MailboxReplicationService.IMailbox.UpdateMovedMailbox>b__3b()
   at Microsoft.Exchange.MailboxReplicationService.ExecutionContext.Execute(GenericCallDelegate operation)
   at Microsoft.Exchange.MailboxReplicationService.MailboxWrapper.Microsoft.Exchange.MailboxReplicationService.IMailbox.UpdateMovedMailbox(UpdateMovedMailboxOperation op, ADUser remoteRecipientData, String domainController, ReportEntry[]& entries, Guid newDatabaseGuid, Guid newArchiveDatabaseGuid, String archiveDomain, ArchiveStatusFlags archiveStatus)
   at Microsoft.Exchange.MailboxReplicationService.LocalMoveJob.UpdateMovedMailbox()
   at Microsoft.Exchange.MailboxReplicationService.MoveBaseJob.UpdateAD(Object[] wiParams)
   at Microsoft.Exchange.MailboxReplicationService.CommonUtils.CatchKnownExceptions(GenericCallDelegate del, FailureDelegate failureDelegate)
Error context: ——–
Operation: IMailbox.UpdateMovedMailbox
OperationSide: Target
Primary (62d90226-d9a1-4941-baa5-28104b5fab78)
12/10/2011 1:04:36 AM [CAS] Relinquishing job.

It turns out that in when looking in the AD at the user proxy addresses a couple of them had an Š instead of an S.

When you looked with Exchange, it showed the S and not Š

So it’s an extended ASCII character (_http://en.wikipedia.org/wiki/%C5%A0 (_http://en.wikipedia.org/wiki/%C5%A0)). 

When I have changed it to a “normal” S using ADSIEdit, the move then worked!

How funky! .. Interesting in the Get-Mailbox still tagged the mailbox as valid!

 
formats

Virus of the week (2012-01-09)

#Exchange #Exchange2010 #Virus

So this is a summary of what Microsoft Forefront Protection for Exchange Server detected as a virus.

Trojan-Spy.HTML.Fraud.gen

  • Subject line:  "Botanical Gardens Boot Camp NOW STARTING"
  • Subject line:  "Just for Cardholders: Save an extra 10% on select TVs at Amazon.com"
  • Subject line:  "Bank of America Customer Service – Tell us what you think"
  • Subject line:  "PayPal – Your account has been limited!"

Win32/Pdfjsc.RF

MSWord/Dropper.B!Camelot   

  • File name:  "winmail.dat->Insurance.zip->1036775_4909136e-c76f-466a-a8fe-a935fb735dbd_TATAAIGFIRSTPLAN.doc"
     
    formats

    Prognosis Webinar – Top 5 ways to Microsoft Lync success

    Published on January 13th, 2012 by in Lync

    #Lync

    Could be interesting

    If you haven’t already registered to attend next week’s Prognosis for Microsoft Lync Webinar, please REGISTER NOW by clicking on the date below for your region. 
    In this 60-minute webinar you can learn how Prognosis bridges the gap between server infrastructure management and UC management teams and build the new management skills you need to integrate Microsoft Lync server and voice quality performance management. Accelerate the transition from server and application expertise to real-time Unified Communications management!

    Webinar:

    Top 5 ways to ensure success in your Microsoft Lync deployment

    Dates:

    Australia: Tuesday, 17 January 2012, 1pm – 2pm AEDT
    Americas: Wednesday, 18 January 2012, 2:00pm – 3:00pm EST
    Europe: Wednesday, 18 January 2012, 1:00pm – 2:00pm GMT

     
    Tags:
    comments  Comments Off
    formats

    Get-RegistryValue

    Published on January 3rd, 2012 by in Powershell

    #Powershell

    So I have been messing with Powershell for a while now, Jeff asked me to look at script he had that read remote registry values.  He was using PSRemoteRegistry but got some errors.

    So I knocked this function up for him Winking smile

    function Get-RegistryValue([Switch]$Recurse=$false, [String]$ComputerName=(hostname), [String]$Hive="HKLM", [String]$key)
    {
      $OutArray = @()
      Switch($Hive){
        "HKCR"  {$type = [Microsoft.Win32.RegistryHive]::ClassesRoot}
        "HKU"   {$type = [Microsoft.Win32.RegistryHive]::Users}
        "HKPD"  {$type = [Microsoft.Win32.RegistryHive]::PerformanceData}
        "HKDD"  {$type = [Microsoft.Win32.RegistryHive]::DynData}
        "HKCU"  {$type = [Microsoft.Win32.RegistryHive]::CurrentUser}
        "HKLM"  {$type = [Microsoft.Win32.RegistryHive]::LocalMachine}
      }#Case

      $regKey = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey($type, $ComputerName)
      $regKey = $regKey.OpenSubKey($key)
      If($regKey -eq $Null){Write-Host "Registry Key ["$Hive"\"$key"] Not Found" -ForeGroundColor Red;Return}
      Write-Host "`n"$regkey -ForeGroundColor Blue
      If ($Recurse -AND $regKey.SubKeyCount -gt 0){

        ForEach($sub in $regKey.GetSubKeyNames()){
          $SUBkey = $key + "\" + $Sub
          Get-RegistryValue -ComputerName $ComputerName -Hive $Hive -Key $SUBKey -Recurse $Recurse
        }#ForEach
      }#If
      ForEach($Subx in $RegKey.GetValueNames()){
        $RegArray = "" | Select ComputerName, Key, Value, path
        $RegArray.ComputerName = $ComputerName
        $RegArray.Key          = $SubX
        $RegArray.Value        = $Regkey.GetValue($SubX)
        $RegArray.Path         = $RegKey.Name
        $OutArray             += $RegArray
      }#ForEach
    Return $OutArray
    }#End Function Get-RegistryValue

    Essentially all you need to do is

    Get-RegistryValue –ComputerName <Computername> -Key "SYSTEM\CurrentControlSet\services\SNMP\Parameters\TrapConfiguration" -Hive HKLM –Recurse

    You change the -Hive switch to the particular registry hive (by default it will use HKLM), give it a computername (by default it will use the localhost) and a registry key path .. Done!

    You can also recurse a registry if there are subkeys .. nice Open-mouthed smile

    Let me know what you think

     
    Tags:
    comments  Comments Off
    formats

    RIM / BlackBerry buyout

    #BlackBerry
    Number of interesting articles in the news over the last couple of days, with the likes of Amazon and Microsoft / Nokia looking at buying RIM.

    Could be interesting to see where this goes, especially with the fact that RIM licences ActiveSync from Microsoft already and the new BBx devices may or may not ;-) natively support the ActiveSync protocol.

    Think it would be good for Microsoft / Nokia to takem, Nokia with the devices and Microsoft with the server products .. Let’s see … Wonder if you can get Windows Phone 7 ported to a playbook?

     
    comments  Comments Off
    formats

    Enumerate-Groups.ps1

    Published on December 19th, 2011 by in Powershell

    #Powershell #Exchange2010

    I just wanted to share this cmdlet I created today.  I had a need to workout from Nested Groups including DDL’s the number of users a DL would reach, so I knocked this baby up.

    Its v1, so any feedback is very welcome.  Usage is basically

    Enumerate-Groups.ps1 –GroupName “Group”

    or

    Get-Group “Group” | ForEach{.\Enumerate-Groups.ps1 –GroupName $_.DistinguishedName }

    Enjoy

     

    PARAM([String]$GroupName="",[Switch]$ShowUsers=$False, [String]$DomainController="<DC NAME>")

    If($GroupName -eq ""){Write-Host "You need to specify a group";Exit}

    ##########################################################################################

    $AppName = "Enumerate-Groups.ps1"

    $AppVer  = "v1.0 [19 December2011]"

    #v1.0 19 Dec 2011 : A script it born

    #

    # This script take a groupname as an agrument and then attempts to enumerate the users

    # contained in the group by checking all necessary nested groups

    #

    #Parameters:

    #GroupName        : Name of the group (top level) that you want to enumerate

    #ShowUsers        : Displays and exports userlist to CSV

    #DomainController : Name of a DC to use

    #

    #Written By Paul Flaherty

    #blogs.flaphead.com 

    ##########################################################################################

    #Display script name and version

    #########################################################################################

    Write-host " " $AppName -NoNewLine -foregroundcolor Green

    Write-Host ": " $AppVer -foregroundcolor Green

    Write-host "`n Run on $ServerName at $Today by $xUser" -foregroundcolor Yellow

    Write-Host "|——————————————————————-|`n"

    ##########################################################################################

    #Load the Exchange 2010 bits & bobs

    #########################################################################################

    $xPsCheck = Get-PSSnapin | Select Name | Where {$_.Name -Like "*Exchange*"}

    If ($xPsCheck -eq $Null) {Add-PsSnapin Microsoft.Exchange.Management.PowerShell.e2010}

    Import-Module ActiveDirectory

    Function Enumerate-Group($InGroup){

      $tmpADo = Get-AdObject $InGroup  -Server $script:dc

      $tmpADo.ObjectClass

      If($tmpADo.ObjectClass -ne "msExchDynamicDistributionList"){

        $tmpExGroup = Get-Group $InGroup -resultsize 1 -DomainController $Script:DC

        $tmpGroup = Get-ADGroup $tmpExGroup.DistinguishedName -Properties Members  -Server $script:dc

        Write-Host "-"$tmpGroup.Name":"$tmpGroup.ObjectClass

        Write-host "+- Member Count: " $tmpGroup.Members.Count

        $Members = $tmpGroup.Members | Sort

        ForEach($Item in $Members){

          $tmpMember = Get-AdObject $Item  -Server $script:dc

          $tmpName   = $tmpMember.Name

          If($tmpMember.ObjectClass -ne "user"){

            Write-Host "+–" $tmpName":" $tmpMember.ObjectClass

          }

          $tmpUsers = "" | Select Name, DDL

          If($tmpMember.ObjectClass -eq "user"){

            $tmpUsers.Name = $tmpMember.name

            $tmpUsers.DDL  = $tmpGroup.Name

            $Script:Users += $tmpUsers

          }#If user

          if($tmpMember.ObjectClass -eq "group"){Enumerate-group $tmpMember.Name}

          if($tmpMember.ObjectClass -eq "msExchDynamicDistributionList"){

            Enumerate-DDL $TmpMember.Name

          } #If msExchDynamicDistributionList

        } #ForEach

      }ELSE{

        Write-Host "-"$tmpADo.Name":"$tmpGroup.ObjectClass

        Enumerate-DDL $tmpADo.Name

      }#IF

    } #Function Enumerate-Group

    Function Enumerate-DDL($InDDL){

      $tmpDDL   = Get-DynamicDistributionGroup $InDDL -DomainController $Script:DC

      $mc = Measure-Command {$tmpRecp  = Get-Recipient -RecipientPreviewFilter $tmpDDL.RecipientFilter -OrganizationalUnit $tmpDDL.RecipientContainer -ResultSize Unlimited -DomainController $Script:DC}

      $tmpCount = 0

      ForEach($r in $tmpRecp){$tmpCount ++}

      Write-Host "+— User Count: " -NoNewLine

      Write-Host $tmpCount -ForeGroundColor Green -NoNewLine

      Write-Host " in" $mc.TotalSeconds "Seconds`n"

      ForEach($item in $tmpRecp){

        If ($Item.name -ne ""){

          $tmpUsers = "" | Select Name, DDL

          $tmpUsers.Name = $Item.name

          $tmpUsers.DDL  = $tmpDDL.Name

          $Script:Users += $tmpUsers

        }

      }#ForEach

    }#Function Enumerate-DDL

    $script:DC    = $DomainController

    $Script:users = @()

    Write-Host "Domain Controller:.. $script:dc"

    Write-Host "Show Users:……… $ShowUsers"

    $g = Get-ADObject $GroupName -Server $script:dc

    If($g -eq $Null){Write-host "Problem with the group";Exit}ELSE{Enumerate-group $GroupName}

    $totusers  = $script:Users.Count

    $tmpusers  = $script:users | sort Name -Unique

    $totuusers = $tmpusers.count

    Write-Host "`nTotal Users: " -NoNewLine

    Write-Host $totusers -Foregroundcolor Green

    Write-Host "`nTotal Unique Users: " -NoNewLine

    Write-Host $totuusers -Foregroundcolor Green

    If($ShowUsers){

      Write-Host "`n`nUser List" -foregroundcolor blue

      Write-Host "- Exporting to GroupUserList.csv"

      $Script:Users | Export-CSV GroupUserList.csv -NoTypeInformation -Delimiter "|"

      $Script:Users | sort DDL, Name

    }

    #End

     
    formats

    RIM delays BlackBerry 10 phones until late 2012

    Published on December 17th, 2011 by in BlackBerry

    #BlackBerry

    Read this in the Time today.  This is really going to mess up my roadmap Disappointed smile

    http://www.manufacturingdigital.com/technology/rim-delays-blackberry-10-phones-until-late-2012

    Former king of the corporate smartphone market BlackBerry looks set to lose further ground to rivals Apple, Samsung, HTC and the rejuvenated Nokia. Research In Motion (RIM) revealed that its range of BlackBerry 10 devices will not come out until late 2012.

    The range of smartphones were due to be released in the first quarter of next year, however RIM’s co-CEO Mike Lazaridis told analysts on a conference call that a required highly integrated chipset would not be available until mid-2012.

     
    Tags:
    comments  Comments Off
    formats

    #OneNote for the #iPad is out

    Published on December 15th, 2011 by in iPad, OneNote

    Yeah baby at last, up on the AppStore Microsoft OneNote for the iPad

    Syncs with you sky drive … I love it

     
    comments  Comments Off
     
    © Origin Solutions IT Limited