Let op: Tweakers stopt per 2023 met Tweakblogs. In
dit artikel
leggen we uit waarom we hiervoor hebben gekozen.
Mailbox statistieken
Voor een klant ben ik bezig met een overzicht van de Top15 mailboxen in hun organisatie. Aangezien ze al een script van Steve Goodman hebben draaien met een mooi overzicht van hun omgeving heb ik besloten wat Powershell code toe te voegen aan dat script.
De volgende oneliner leek me handig om later via HTML de output weer te geven:
In de testomgeving was het allemaal geen probleem maar in productie was de hoeveelheid mailboxen een probleem waardoor Powershell me de volgende foutmelding teruggaf:
Na een nachtje slapen besloten om de boel eerst per server af te handelen en vervolgens een totaalstaatje te maken. Dat levert het volgende stukje op:
Voordeel was ook nog eens dat de verwerking een stuk sneller ging.
Eindresultaat is verwerkt in het EnvironmentReport script van Steve Goodman (aanrader wat mij betreft)
De volgende oneliner leek me handig om later via HTML de output weer te geven:
PowerShell:
1
| $mailboxsizes = get-mailbox -resultsize unlimited| Get-MailboxStatistics |Sort-Object TotalItemSize -Descending | Select-Object DisplayName,TotalItemSize -First 10 |
In de testomgeving was het allemaal geen probleem maar in productie was de hoeveelheid mailboxen een probleem waardoor Powershell me de volgende foutmelding teruggaf:
Na wat tips van Tweakers uitgezocht te hebben om bv de sessionlimit te verhogen heb ik besloten om dit allemaal niet te doen. Zodoende kan ik het script overal inzetten zonder omgevingen aan te passen.Sending data to a remote command failed with the following error message: The total data received from the remote client exceeded allowed maximum. Allowed maximum is 524288000. For more information, see the about_Remote_Troubleshooting Help Topic
Na een nachtje slapen besloten om de boel eerst per server af te handelen en vervolgens een totaalstaatje te maken. Dat levert het volgende stukje op:
PowerShell:
1
2
3
4
5
| $servers=Get-Exchangeserver foreach ($server in $servers){ $mailboxsizes+=Get-MailboxStatistics -Server $server| Sort-Object TotalItemSize -Descending| Select-Object DisplayName,TotalItemSize -First 10 } $mailboxsizes = $mailboxsizes |Sort-Object TotalItemSize -Descending| Select-Object DisplayName,TotalItemSize -First 10 |
Voordeel was ook nog eens dat de verwerking een stuk sneller ging.
Eindresultaat is verwerkt in het EnvironmentReport script van Steve Goodman (aanrader wat mij betreft)
Exchange rechten op mailboxen
Laat ik beginnen met het feit dat ik een Powershell beginneling ben die een beetje aanrommelt om het dagelijkse leven als sysadmin wat aangenamer te maken.
Onderstaande script heb ik gemaakt om snel op een aantal mailboxen de send as/send on behalf en full mailbox access uit te kunnen lezen.
Voor versie 2 staat het netter maken van de output en het omzetten van de loginnaam naar de displaynaam op het programma.
Mocht iemand daar al wat voor hebben houd ik me natuurlijk ook aanbevolen
Onderstaande code opslaan in een Powershell bestand en aanroepen vanaf de PS-prompt. Daarbij aangeven welke csv er gebruikt moet worden, bv .\script.PS1 .\input.csv
Opzet van de CSV is vrij eenvoudig:
De ps-code:
Onderstaande script heb ik gemaakt om snel op een aantal mailboxen de send as/send on behalf en full mailbox access uit te kunnen lezen.
Voor versie 2 staat het netter maken van de output en het omzetten van de loginnaam naar de displaynaam op het programma.
Mocht iemand daar al wat voor hebben houd ik me natuurlijk ook aanbevolen
Onderstaande code opslaan in een Powershell bestand en aanroepen vanaf de PS-prompt. Daarbij aangeven welke csv er gebruikt moet worden, bv .\script.PS1 .\input.csv
Opzet van de CSV is vrij eenvoudig:
code:
1
2
3
4
| Mailbox mailbox1@domein.nl mailbox2@domein.nl mailbox3@domein.nl |
De ps-code:
PowerShell:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| param( [string]$file ) import-csv $file | ForEach { $SendAs = Get-mailbox $_.Mailbox |Get-ADPermission | ? {$_.ExtendedRights -like "Send-As" -and $_.User -notlike "NT AUTHORITY\SELF" -and !$_.IsInherited} | select user |fl $FullAccess = Get-MailboxPermission $_.Mailbox | ? {$_.AccessRights -eq "FullAccess" -and !$_.IsInherited} | select user |fl $SendOnBehalf = Get-mailbox $_.Mailbox | select -ExpandProperty GrantSendOnBehalfTo | select name |fl Echo "Mailbox:" $_.Mailbox Echo "Send As:" $SendAs Echo "Full Access:" $FullAccess Echo "Send on Behalf:" $SendOnBehalf } |