Skriptproblem - Exchange 2013
Hallo und Frohe Weihnachten liebe Kolleginnen und Kollegen,
ich habe ein kleines Problem mit einem Skript, welches @colinardo mir freundlicherweise erstellt hat. Es soll Send-On-Behalf und Mailbox Full Access Rechte an die Mitglieder von Gruppen vergeben. Bis zum letzten Exchange-Update hat das Skript auch einwandfrei funktioniert, jetzt allerdings erhalte ich nur Fehlermeldungen.
Das Skript lautet wie folgt:
Die Fehlermeldung lautet folgendermaßen:
Hat jemand eine Idee, wie ich das Skript anpassen muss, dass es wieder funktioniert?
Vielen Dank für die Hilfe!
Beste Grüße!
Berthold
ich habe ein kleines Problem mit einem Skript, welches @colinardo mir freundlicherweise erstellt hat. Es soll Send-On-Behalf und Mailbox Full Access Rechte an die Mitglieder von Gruppen vergeben. Bis zum letzten Exchange-Update hat das Skript auch einwandfrei funktioniert, jetzt allerdings erhalte ich nur Fehlermeldungen.
Das Skript lautet wie folgt:
# Exchange-Shell laden
$s = Get-PSSession | Where-Object {$_.ConfigurationName -eq 'Microsoft.Exchange'}
if($s){
Write-Host "Exchange Management Shell already loaded"
}
else
{
Write-Host "Exchange Management Shell not found - Loading..." -ForegroundColor Yellow
. "$env:ExchangeInstallPath\bin\RemoteExchange.ps1"
Write-Host "Exchange Management Shell loaded $nl" -ForegroundColor green
Write-Host "Connecting to Exchange server $nl"
Connect-ExchangeServer -auto
Write-Host "Connected to Exchange Server $nl" -ForegroundColor green
}
# Postfach1
$mailbox = "buchhaltung@example.com"
$group = "Buchhaltung"
$mailboxFullRightUsers = Get-MailboxPermission $mailbox | ?{$_.AccessRights -eq "FullAccess" -and $_.IsInherited -eq $false} | %{$_.User.toString().split("\")[1]}
$groupMemberUsers = Get-AdGroupMember -Identity $group | ?{$_.ObjectClass -eq "user"} | %{$_.SamAccountName}
# SendOnBehalf Recht vergeben
Set-Mailbox $mailbox -GrantSendOnBehalfTo $groupMemberUsers
# Füge Gruppen-Member zur Shared Mailbox hinzu die noch keinen Vollzugriff haben
Compare $mailboxFullRightUsers $groupMemberUsers -PassThru | ?{$_.SideIndicator -eq "=>"} | %{echo "Füge User '$_' der Mailbox hinzu"; Add-MailboxPermission $mailbox -User $_ -AccessRights FullAccess -InheritanceType All | out-null}
# Entferne Permissions wenn User nicht mehr Mitglied der Gruppe
Compare $mailboxFullRightUsers $groupMemberUsers -PassThru | ?{$_.SideIndicator -eq "<="} | %{echo "Entferne User '$_' aus der Shared Mailbox"; Remove-MailboxPermission $mailbox -User $_ -AccessRights FullAccess -Confirm:$false | out-null}
Die Fehlermeldung lautet folgendermaßen:
Compare-Object : Das Argument kann nicht an den Parameter "ReferenceObject" gebunden werden, da es NULL ist.
In C:\Skripte\Postfachberechtigungen.ps1:56 Zeichen:9
+ Compare $mailboxFullRightUsers $groupMemberUsers -PassThru | ?{$_.SideIndicator ...
+ ~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidData: (:) [Compare-Object], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.CompareObjectCommand
Hat jemand eine Idee, wie ich das Skript anpassen muss, dass es wieder funktioniert?
Vielen Dank für die Hilfe!
Beste Grüße!
Berthold
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 258504
Url: https://administrator.de/contentid/258504
Ausgedruckt am: 22.11.2024 um 21:11 Uhr
12 Kommentare
Neuester Kommentar
Hallo Berthold,
bin hier zufällig gerade vorbei geschlendert...
Anscheinend hat die entsprechende Mailbox keine User denen expliziten FullAccess Rechte erteilt wurden. Wie die Fehlermeldung schon sagt ist das Reference-Object also die erste Variable $mailboxFullRightUsers leer.
Lass dir also mal folgende Zeile anzeigen:
wenn da nix bei raus kommt, liegt hier der Fehler. Lass dir auch mal nur
anzeigen und überprüfe ob es überhaupt ein "FullAccess Right" ohne "inheritance" gibt.
Wenn das der Fall wäre müsste man dies mit einem IF abfangen und in diesem Fall einfach alle User aus $groupMemberUsers hinzufügen.
Frohes Fest
Grüße Uwe
bin hier zufällig gerade vorbei geschlendert...
Anscheinend hat die entsprechende Mailbox keine User denen expliziten FullAccess Rechte erteilt wurden. Wie die Fehlermeldung schon sagt ist das Reference-Object also die erste Variable $mailboxFullRightUsers leer.
Lass dir also mal folgende Zeile anzeigen:
Get-MailboxPermission $mailbox | ?{$_.AccessRights -eq "FullAccess" -and $_.IsInherited -eq $false}
Get-MailboxPermission "buchhaltung@example.com"
Wenn das der Fall wäre müsste man dies mit einem IF abfangen und in diesem Fall einfach alle User aus $groupMemberUsers hinzufügen.
Frohes Fest
Grüße Uwe
Könnte sein das sich hier das CMDLet Compare-Object etwas geändert hat. Gebe die Parameternamen in der COMPARE-Zeile mal explizit an:
aber wenn die Shell sagt das das Objekt NULL ist dann wird das auch stimmen ...
Eventuell hast du durch den mehrfachen Aufrufen irgendwo einen Fehler eingebaut.
Compare -ReferenceObject $mailboxFullRightUsers -DifferenceObject $groupMemberUsers .....................
Eventuell hast du durch den mehrfachen Aufrufen irgendwo einen Fehler eingebaut.
Dann kann eigentlich nur irgendwo ein Schreibfehler passiert sein, Setz die Variablen in jedem Abschnitt mal manuell auf $null. Prüfe alle Variablen Schritt für Schritt für jeden Abschnitt. Kann den Fehler hier leider nicht reproduzieren. Aber wieso kopierst du die Befehle per Copy&Paste hintereinander wenn du es mit einer Schleife nur einmal benötigst ?
$ht = @{
"mailbox1@domain.de"="Gruppe1";
"mailbox2@domain.de"="Gruppe2";
"mailbox3@domain.de"="Gruppe3";
}
$ht.GetEnumerator() | %{
$mailbox = $_.Key
$group = $_.Value
#..... hier der Rest ...
#...
#..
}
Zitat von @BirdyB:
Also zum Thema Schreibfehler:
Ich habe die Befehle jetzt mal in eine Funktion gepackt. Mit meiner Buchhaltungsgruppe gibt es keinen Fehler mit den anderen schon. Ich habe nur ehrlich keine Idee warum das so ist...
Da hilft dann leider nur penibelstes Zerlegen der Pipes und checken der Werte. Das kann ich dir hier leider nicht abnehmen, da mir deine Rohdaten fehlen, sorry.Also zum Thema Schreibfehler:
Ich habe die Befehle jetzt mal in eine Funktion gepackt. Mit meiner Buchhaltungsgruppe gibt es keinen Fehler mit den anderen schon. Ich habe nur ehrlich keine Idee warum das so ist...
Grüße Uwe