To discover which version of PowerShell you are running

$host

After EMS is loaded, you have the following variables:

$ExBin

$ExScripts

$ExInstall

$_

Get-CASMailbox | Where-Object{$_.owaEnabled} | Select Name

Get-User | Where-Object {$_.Department -eq ""} | Set-User -Department 'Network'

$u=(Get-User -ID rKing).Identity;Get-Group | Where-Object{$_.members -eq $U}

set-user rKing -Office "Building A"
get-user -filter {Office -eq "Building A"} | Set-User -Office "Building B"


get-mailbox | Get-MailboxFolderStatistics | Where-Object {$_.Name -eq 'Inbox' -and $_.itemsInfolder -lt 10} | Select Identity, itemsInFolder

get-mailbox | Get-MailboxFolderStatistics | Where-Object {$_.Name -eq 'Inbox' -and $_.itemsInfolder -gt 10} | Select Identity, itemsInFolder


Add a recipient photo

regsvr32 schmmgmt.dll

MMC --Add Active Directory Schema console

Attributes

Locate the ThumbnailPhoto attribute as shown:

Thumbnailphoto

2

The F:\Pictures folder includes the photos.

Import-RecipientDataProperty -Identity 'Rudy King' -Picture -FileData([Byte[]]$(Get-Content -Path 'F:\pictures\rKing.jpg' -Encoding Byte -ReadCount 0))

Import-RecipientDataProperty -Identity 'Administrator' -Picture -FileData([Byte[]]$(Get-Content -Path 'F:\pictures\Administrator.jpg' -Encoding Byte -ReadCount 0))

Set the ThumbnailPhoto to be offline accessible

$attributes = (Get-OfflineAddressBook “Default Offline Address Book”).ConfiguredAttributes
$attributes.Remove(“thumbnailphoto,Indicator”)
Set-OfflineAddressBook “Default Offline Address Book” -ConfiguredAttributes $attributes

$attributes.Add(“thumbnailphoto,Value”)
Set-OfflineAddressBook “Default Offline Address Book” -ConfiguredAttributes $attributes

Update-OfflineAddressBook “Default Offline Address Book”

Open outlook with Exchange configuration in cached mode, the photos for both Administrator and Rudy King will show.



new-mailboxdatabase -Server 'EX1' -Name 'TelusDataBase'
mount-database -Identity 'TelusDataBase'

Set $password variable first

$password=read-host "Enter password please!" –asSecureString

$firstName="George"
$lastName="Allistair"
$city="Vancouver"
$company="Telus"
$province="BC"
$department="Network"
New-Mailbox -Name "$firstName $lastName" -Alias "$firstName.$lastName" -OrganizationalUnit 'Lab.com/Test' -UserPrincipalName "$firstName.$lastName@Lab.com" -SamAccountName "$firstName.$lastName" -FirstName $firstName -Initials '' -LastName $lastName -Password $password -Database 'TelusDatabase'

set-user "$firstname $lastname" -Department $department


$firstName="Jim"
$lastName="Patterson"
$city="Vancouver"
$company="Telus"
$province="BC"
$department="Accounting"
New-Mailbox -Name "$firstName $lastName" -Alias "$firstName.$lastName" -OrganizationalUnit 'Lab.com/Test' -UserPrincipalName "$firstName.$lastName@Lab.com" -SamAccountName "$firstName.$lastName" -FirstName $firstName -Initials '' -LastName $lastName -Password $password -Database 'TelusDatabase'

set-user "$firstname $lastname" -Department $department

$firstName="Rob"
$lastName="Newman"
$city="Vancouver"
$company="Telus"
$province="BC"
$department="Accounting"
New-Mailbox -Name "$firstName $lastName" -Alias "$firstName.$lastName" -OrganizationalUnit 'Lab.com/Test' -UserPrincipalName "$firstName.$lastName@Lab.com" -SamAccountName "$firstName.$lastName" -FirstName $firstName -Initials '' -LastName $lastName -Password $password -Database 'TelusDatabase'

set-user "$firstname $lastname" -Department $department

$firstName="Algo"
$lastName="Clinton"
$department="Accounting"
New-Mailbox -Name "$firstName $lastName" -Alias "$firstName.$lastName" -OrganizationalUnit 'Lab.com/Test' -UserPrincipalName "$firstName.$lastName@Lab.com" -Office $office,SamAccountName "$firstName.$lastName" -FirstName $firstName -Initials '' -LastName $lastName -Password $password -Database 'TelusDatabase'

set-user "$firstname $lastname" -Department $department


Server-side filters and client-side filters

Filterable properties

The -Filter parameter is used in the following cmdlets:

Get-CASMailbox
Get-Contact
Get-DistributionGroup
Get-DynamicDistributionGroup
Get-Group
Get-Mailbox
Get-MailContact
Get-MailPublicFolder
Get-MailUser
Get-Recipient
Get-UMMailbox
Get-User

For example,

get-user -Filter {Department -eq 'accounting'} -resultsize 3

get-user -ResultSize 3 | where {$_.Department -eq 'Accounting'}

1


measure-command{Get-User -Filter {Department -eq 'Accounting'} | Set-Mailbox -ProhibitSendQuota 3000MB -UseDatabaseQuotaDefaults $False}

Days : 0
Hours : 0
Minutes : 0
Seconds : 0
Milliseconds : 801
Ticks : 8013554
TotalDays : 9.27494675925926E-06
TotalHours : 0.000222598722222222
TotalMinutes : 0.0133559233333333
TotalSeconds : 0.8013554
TotalMilliseconds : 801.3554

Measure-command{Get-User | Where{$_Department -eq 'Accounting'} | Set-mailbox -ProhibitSendQuota 1000MB -UseDatabaseQuotaDefaults $false}

Days : 0
Hours : 0
Minutes : 0
Seconds : 4
Milliseconds : 93
Ticks : 40936067
TotalDays : 4.73797071759259E-05
TotalHours : 0.00113711297222222
TotalMinutes : 0.0682267783333333
TotalSeconds : 4.0936067
TotalMilliseconds : 4093.6067

Server Size filter is more efficient than client side filter.

Get-User -Filter {Department -eq 'Accounting'} | Set-Mailbox -Office '8TH Floor'


Aliases:? and %

?=Where-object

%=ForEach-Object

(get-mailbox) | Where{(Get-MailboxStatistics $_).TotalItemSize -gt "10kb"}

get-mailbox | Where{(Get-MailboxStatistics $_).TotalItemSize -gt "10kb"}

(get-mailbox) | ?{(Get-MailboxStatistics $_).TotalItemSize -gt "10kb"}

?

%=ForEach-Object

Get-Mailbox "Rudy King" | %{ Set-Mailbox $_ -EmailAddresses ($_.EmailAddresses+'RK@LAB.COM')}

(Get-Mailbox) | %{ Set-Mailbox $_ -Office '9Th floor'}

Get-Mailbox | %{ Set-Mailbox $_ -Office '9Th floor'}----Error "Pipeline not executed because a pipeline is already executing."

("John Smith","Scott Culp","Algo Clinton"| Get-Mailbox) | %{ Set-Mailbox $_ -Office '6Th floor'}

("John Smith","Scott Culp","Algo Clinton"| Get-Mailbox) | Set-Mailbox -Office '8Th floor' ------better

("John Smith","Scott Culp","Algo Clinton"| Get-Mailbox) | Set-Mailbox -CustomAttribute1 'VP'

(Get-Mailbox -Filter {CustomAttribute1 -eq 'VP'} )| %{ Set-Mailbox $_ -Office '9Th floor'}

(Get-Mailbox -Filter {CustomAttribute1 -eq 'VP'} )| Set-Mailbox -Office '9Th floor' ----better