Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 403
  • Last Modified:

need assistance with a powershell script

hello, i'm looking for a script that i can schedule to run nightly that will check all accounts in an OU and if it encounters an e2010 mailbox that does not have an "online archive" enabled, to go ahead and enable the online archive and set the limits on it.
I have a Quest commandlets script that I run to enable archive by security group, can someone provide a way to target only accounts in a particular OU that do not have an archive enabled.

i've included part of the Quest script that i use to enabled the online archive.

i belive i would need to start with something like:
get-qaduser -OU "OU=Users,DC=domain,DC=com" -filter {Archive Enabled -ne $True} then pipe these results to the snippet below.

thx in advance.

S.



Enable-Mailbox $displayname -Archive -ArchiveDatabase $ArchiveDatabaseName
Set-Mailbox –identity $displayname  –ArchiveQuota 8GB –ArchiveWarningQuota 7096MB

Open in new window

0
siber1
Asked:
siber1
  • 3
  • 3
1 Solution
 
Chris DentPowerShell DeveloperCommented:
I'd have thought something like this (but it'll need a bit of testing).
Get-Mailbox | Where-Object { -Not $_.Archive } | ForEach-Object {
  Enable-Mailbox $displayname -Archive -ArchiveDatabase $ArchiveDatabaseName
  Set-Mailbox –identity $displayname  –ArchiveQuota 8GB –ArchiveWarningQuota 7096MB
}

Open in new window

You might be able to make more efficient filters using just Get-Mailbox (rather than Where-Object), but I don't have Exchange 2010 to test that theory against.

To check and see what you can use to find things that aren't enabled, start with:
Get-Mailbox "Someone Who Is Not" | Format-List *

Open in new window

And / Or:
Get-Mailbox "Someone Who Is" | Format-List *

Open in new window

Chris
0
 
siber1Author Commented:
thx Chris, we have multiple databases, if i wanted to target only e2010 users could i use this format
Get-Mailbox -Server "MailboxServer1"  then pipe it to where-object ...
would that work?

its just that we have a mixed 2003/2010 environment so if i target an OU i would also be hitting e2003 mailbox enabled accounts.

0
 
Chris DentPowerShell DeveloperCommented:
Yeah, that would work. You can mix in as many as you wish, so if you wanted those on a specific server and in an OU there's no harm in doing:

Get-Mailbox -Server "MailboxServer" -OrganizationalUnit "OU=somewhere,DC=domain,DC=com"

But I imagine you already knew that :)

Chris
0
 The Evil-ution of Network Security Threats

What are the hacks that forever changed the security industry? To answer that question, we created an exciting new eBook that takes you on a trip through hacking history. It explores the top hacks from the 80s to 2010s, why they mattered, and how the security industry responded.

 
siber1Author Commented:
Hi Chris, just tried running that in the lab and here is the error:

Pipeline not executed because a pipeline is already executing. Pipelines cannot be executed concurrently.
    + CategoryInfo          : OperationStopped: (Microsoft.Power...tHelperRunspace:ExecutionCmdletHelperRunspace) [],
   PSInvalidOperationException
    + FullyQualifiedErrorId : RemotePipelineExecutionFailed
0
 
Chris DentPowerShell DeveloperCommented:
Oh damn, I forgot about that. The changes they made to the Exchange CmdLets... not helpful at all. We can work-around the problem:
$Mailboxes = Get-Mailbox -Server "MailboxServer1" | Where-Object { -Not $_.Archive }
$Mailboxes | ForEach-Object {
  $_ | Enable-Mailbox -Archive -ArchiveDatabase $ArchiveDatabaseName
  $_ | Set-Mailbox -ArchiveQuota 8GB -ArchiveWarningQuota 7096MB
}

Open in new window

It "should" work, but not something I can test entirely.

Chris
0
 
siber1Author Commented:
thx Chris. that did the trick! appreciate your assistance!

S.
0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

  • 3
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now