Let op: Tweakers stopt per 2023 met Tweakblogs. In
dit artikel
leggen we uit waarom we hiervoor hebben gekozen.
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 } |
06-'15 Renamen edb files
04-'15 VDP bug?
Reacties
Leuk om e volgen, was net naar zoiets op zoek. Voor V2 klinkt veel belovend.
Echter krijg ik deze versie ook niet aan de praat.
Wil de output van dit script exporteren naar een .txt bestand, maar bestand blijft leeg qua inhoud
Echter krijg ik deze versie ook niet aan de praat.
Wil de output van dit script exporteren naar een .txt bestand, maar bestand blijft leeg qua inhoud
Als je het script draait zoals het hier staat krijg je wel output op het scherm?
Nog niet, kan dat het even duurt, hebben nogal wat mailboxen in onze omgevingOogje schreef op dinsdag 21 april 2015 @ 11:05:
Als je het script draait zoals het hier staat krijg je wel output op het scherm?
Import-Csv : Cannot validate argument on parameter 'Path'. The argument is null or empty. Supply an argument that is not null or empty and then try the command again.
At line:5 char:12
+ import-csv $file | ForEach {
+ ~~~~~
+ CategoryInfo : InvalidData: (
[Import-Csv], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.PowerShell.Commands.ImportCsvCommand
At line:5 char:12
+ import-csv $file | ForEach {
+ ~~~~~
+ CategoryInfo : InvalidData: (
+ FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.PowerShell.Commands.ImportCsvCommand
Ik zal mn post ff updaten
Het gaat mis bij de CSV import.
edit: eea ff wat duidelijk neergezet, thnx
edit: eea ff wat duidelijk neergezet, thnx
[Reactie gewijzigd op dinsdag 21 april 2015 11:56]
Je moet dit script draaien met als de CSV file argument, bijvoorbeeld:G.Scholtens schreef op dinsdag 21 april 2015 @ 11:39:
Import-Csv : Cannot validate argument on parameter 'Path'. The argument is null or empty. Supply an argument that is not null or empty and then try the command again.
At line:5 char:12
+ import-csv $file | ForEach {
+ ~~~~~
+ CategoryInfo : InvalidData: ([Import-Csv], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.PowerShell.Commands.ImportCsvCommand
PowerShell:
1
| c:\test\SendAs.ps1 c:\test\SendAsMailbox.csv |
Mocht je deze wijze niet prettig vinden kan je regel 1t/m3 vervangen voor:
PowerShell:
1
| $file = "c:\test\SendAsMailbox.csv" |
@Oogje
:wub:
Je kan er ook nog voor kiezen om de modules voor de AD en Exchange te importeren in je script. Het maakt dan niet meer uit of je het gewoon vanuit een "normale" powershell window start of vanuit een Exchange Management Powershell.
PowerShell:
1
2
| Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010 -ea SilentlyContinue Import-Module ActiveDirectory -ea SilentlyContinue |
[Reactie gewijzigd op dinsdag 21 april 2015 12:19]
Leuk bezig.
Een paar tips:
PowerShell:
Je vraagt hier twee keer dezelfde mailbox op. Je kan de mailbox ook in een variabele zetten en daar verder uit werken.
Verder maak je gebruik van het vraagteken als alias voor where-object. Als jij de enige bent die het script gebruikt is het natuurlijk super, maar als anderen het moeten lezen kan het onduidelijkheid scheppen. Om die reden laat ik het zelf altijd weg.
Voor je output:
Je kan gebruik maken van een PSObject om het in een hashtable te zetten: http://blogs.msdn.com/b/p...t-property-hashtable.aspx
Exporteert uitstekend naar een csv en leest lekker van het scherm
Een paar tips:
PowerShell:
1
2
| $SendAs = Get-mailbox $_.Mailbox $SendOnBehalf = Get-mailbox $_.Mailbox |
Je vraagt hier twee keer dezelfde mailbox op. Je kan de mailbox ook in een variabele zetten en daar verder uit werken.
Verder maak je gebruik van het vraagteken als alias voor where-object. Als jij de enige bent die het script gebruikt is het natuurlijk super, maar als anderen het moeten lezen kan het onduidelijkheid scheppen. Om die reden laat ik het zelf altijd weg.
Voor je output:
Je kan gebruik maken van een PSObject om het in een hashtable te zetten: http://blogs.msdn.com/b/p...t-property-hashtable.aspx
Exporteert uitstekend naar een csv en leest lekker van het scherm
Thnx voor de tips 
PowerShell:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| param( [string]$file ) $mailboxes = import-csv $file ForEach ($mailbox in $mailboxes) { "Mailbox:" $mailbox.Mailbox "Send As:" $mailbox.Mailbox |Get-ADPermission | ? {$_.ExtendedRights -like "Send-As" -and $_.User -notlike "NT AUTHORITY\SELF" -and !$_.IsInherited} | select user |fl "Full Access:" Get-MailboxPermission $mailbox.Mailbox | ? {$_.AccessRights -eq "FullAccess" -and !$_.IsInherited} | select user |fl "Send on Behalf:" $mailbox.Mailbox | select -ExpandProperty GrantSendOnBehalfTo | select name |fl } |
Zoiets dan maar, scheelt inderdaad nogal wat Get-Mailbox statements, maar wel handig script verder
[Reactie gewijzigd op woensdag 22 april 2015 20:08]
Reageren is niet meer mogelijk