Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Skriptproblem - Exchange 2013

Frage Microsoft Exchange Server

Mitglied: BirdyB

BirdyB (Level 2) - Jetzt verbinden

24.12.2014, aktualisiert 18:29 Uhr, 2007 Aufrufe, 12 Kommentare

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:
01.
# Exchange-Shell laden 
02.
 
03.
 
04.
$s = Get-PSSession | Where-Object {$_.ConfigurationName -eq 'Microsoft.Exchange'} 
05.
if($s){ 
06.
    Write-Host "Exchange Management Shell already loaded" 
07.
08.
else 
09.
10.
    Write-Host "Exchange Management Shell not found - Loading..." -ForegroundColor Yellow 
11.
  
12.
        . "$env:ExchangeInstallPath\bin\RemoteExchange.ps1" 
13.
  
14.
        Write-Host "Exchange Management Shell loaded $nl"   -ForegroundColor green 
15.
  
16.
        Write-Host "Connecting to Exchange server $nl" 
17.
  
18.
        Connect-ExchangeServer -auto 
19.
  
20.
        Write-Host "Connected to Exchange Server $nl" -ForegroundColor green 
21.
22.
 
23.
 
24.
# Postfach1 
25.
 
26.
 
27.
$mailbox = "buchhaltung@example.com" 
28.
$group = "Buchhaltung" 
29.
 
30.
$mailboxFullRightUsers = Get-MailboxPermission $mailbox | ?{$_.AccessRights -eq "FullAccess" -and $_.IsInherited -eq $false} | %{$_.User.toString().split("\")[1]} 
31.
$groupMemberUsers = Get-AdGroupMember -Identity $group | ?{$_.ObjectClass -eq "user"} | %{$_.SamAccountName} 
32.
 
33.
# SendOnBehalf Recht vergeben 
34.
Set-Mailbox $mailbox -GrantSendOnBehalfTo $groupMemberUsers 
35.
 
36.
# Füge Gruppen-Member zur Shared Mailbox hinzu die noch keinen Vollzugriff haben 
37.
Compare $mailboxFullRightUsers $groupMemberUsers -PassThru | ?{$_.SideIndicator -eq "=>"} | %{echo "Füge User '$_' der Mailbox hinzu"; Add-MailboxPermission $mailbox -User $_ -AccessRights FullAccess -InheritanceType All | out-null} 
38.
 
39.
# Entferne Permissions wenn User nicht mehr Mitglied der Gruppe 
40.
Compare $mailboxFullRightUsers $groupMemberUsers -PassThru | ?{$_.SideIndicator -eq "<="} | %{echo "Entferne User '$_' aus der Shared Mailbox"; Remove-MailboxPermission $mailbox -User $_ -AccessRights FullAccess -Confirm:$false | out-null} 
41.
 
Die Fehlermeldung lautet folgendermaßen:

01.
Compare-Object : Das Argument kann nicht an den Parameter "ReferenceObject" gebunden werden, da es NULL ist. 
02.
In C:\Skripte\Postfachberechtigungen.ps1:56 Zeichen:9 
03.
+ Compare $mailboxFullRightUsers $groupMemberUsers -PassThru | ?{$_.SideIndicator  ... 
04.
+         ~~~~~~~~~~~~~~~~~~~~~~ 
05.
    + CategoryInfo          : InvalidData: (:) [Compare-Object], ParameterBindingValidationException 
06.
    + 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
Mitglied: emeriks
24.12.2014 um 13:59 Uhr
Hi,
es ist schwer, etwas über Zeile 56 zu sagen, wenn diese hier nicht dabei ist ...

E.
Bitte warten ..
Mitglied: BirdyB
24.12.2014, aktualisiert um 14:21 Uhr
Du hast natürlich Recht... Der Block zwischen Zeile 24 und 41 wiederholt sich noch für einige andere Postfächer, daher habe ich die Wiederholungen weggelassen.
Zeile 56 lautet:
01.
Compare $mailboxFullRightUsers $groupMemberUsers -PassThru | ?{$_.SideIndicator -eq "=>"} | %{echo "Füge User '$_' der Mailbox hinzu"; Add-MailboxPermission $mailbox -User $_ -AccessRights FullAccess -InheritanceType All | out-null}
Ich habe gerade nochmal einzelne Teile des Skripts manuell ausgeführt. Eine Sache hat mich jedoch etwas gewundert:
01.
[PS] C:\Windows\system32>compare 
02.
Cmdlet Compare-Object an der Befehlspipelineposition 1 
03.
Geben Sie Werte für die folgenden Parameter an: 
04.
ReferenceObject[0]: $mailboxfullrightusers 
05.
ReferenceObject[1]: $groupmemberusers 
06.
ReferenceObject[2]:  
07.
DifferenceObject[0]:  
08.
 
09.
InputObject                                                                                     SideIndicator                                                                                  
10.
-----------                                                                                     -------------                                                                                  
11.
$mailboxfullrightusers                                                                          <=                                                                                             
12.
$groupmemberusers                                                                               <=                                                                                             
13.
 
14.
 
15.
 
16.
[PS] C:\Windows\system32>Compare $mailboxFullRightUsers $groupMemberUsers 
17.
Compare-Object : Das Argument kann nicht an den Parameter "ReferenceObject" gebunden werden, da es NULL ist. 
18.
In Zeile:1 Zeichen:9 
19.
+ Compare $mailboxFullRightUsers $groupMemberUsers 
20.
+         ~~~~~~~~~~~~~~~~~~~~~~ 
21.
    + CategoryInfo          : InvalidData: (:) [Compare-Object], ParameterBindingValidationException 
22.
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.CompareObjectCommand
Einzeln eingegeben erhalte ich keine Fehlermeldung, übergebe ich die beiden Objekte als Parameter schon... Woran kann das liegen?
Bitte warten ..
Mitglied: emeriks
24.12.2014 um 14:49 Uhr
Könnte es sein, dass die betreffende Gruppe tatsächlich keine Benutzer als direkte Mitglieder hat?
Bitte warten ..
Mitglied: colinardo
24.12.2014, aktualisiert um 15:06 Uhr
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:
Get-MailboxPermission $mailbox | ?{$_.AccessRights -eq "FullAccess" -and $_.IsInherited -eq $false}
wenn da nix bei raus kommt, liegt hier der Fehler. Lass dir auch mal nur
Get-MailboxPermission "buchhaltung@example.com"
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
Bitte warten ..
Mitglied: BirdyB
24.12.2014, aktualisiert um 15:32 Uhr
Hallo Uwe,

also bei beiden Abfragen werden mir Benutzer angezeigt... die meisten haben bei AccessRights {FullAccess} stehen.
Auch wenn ich das Skript Schritt-für-Schritt ablaufen lasse, stehen in $mailboxfullrightusers und in $groupmemberusers Benutzer drin.

Frohes Fest und beste Grüße!


Berthold
Bitte warten ..
Mitglied: colinardo
24.12.2014, aktualisiert um 15:52 Uhr
Könnte sein das sich hier das CMDLet Compare-Object etwas geändert hat. Gebe die Parameternamen in der COMPARE-Zeile mal explizit an:
Compare -ReferenceObject $mailboxFullRightUsers -DifferenceObject $groupMemberUsers .....................
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.
Bitte warten ..
Mitglied: BirdyB
24.12.2014, aktualisiert um 15:42 Uhr
Leider immer noch der gleiche Fehler...

EDIT:

Was mir gerade aufgefallen ist: Bei der Buchhaltungsgruppe läuft das Skript ohne Fehler durch, bei allen Folgenden gibt es den Fehler.
Die Befehle sind für jedes Postfach per Copy&Paste eingefügt, nur $mailbox und $group habe ich manuell geändert.
Bitte warten ..
Mitglied: colinardo
24.12.2014, aktualisiert um 16:05 Uhr
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 ?

01.
$ht = @{ 
02.
        "mailbox1@domain.de"="Gruppe1"; 
03.
        "mailbox2@domain.de"="Gruppe2"; 
04.
        "mailbox3@domain.de"="Gruppe3"; 
05.
06.
$ht.GetEnumerator() | %{ 
07.
    $mailbox = $_.Key 
08.
    $group = $_.Value 
09.
 
10.
    #..... hier der Rest ... 
11.
    #... 
12.
    #.. 
13.
 
14.
}
Bitte warten ..
Mitglied: BirdyB
24.12.2014 um 16:06 Uhr
Weil ich keine Idee habe, wie ich die Zuordnungen Von Postfach und Gruppe sinnvoll in Powershell in eine Schleife bekomme
Bitte warten ..
Mitglied: BirdyB
24.12.2014 um 16:26 Uhr
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...
Bitte warten ..
Mitglied: colinardo
LÖSUNG 24.12.2014, aktualisiert um 18:29 Uhr
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.

Grüße Uwe
Bitte warten ..
Mitglied: BirdyB
24.12.2014 um 18:29 Uhr
Also: Dank @colinardo habe ich das Problem jetzt gelöst: Ich hatte einen Benutzer gelöscht und deshalb stand nur eine SID in der Gruppenliste. Das hat dann den Fehler ausgelöst.
Die Lösung: Die fehlerhafte Zeile wie folgt ersetzen:
01.
$mailboxFullRightUsers = Get-MailboxPermission $mailbox | ?{$_.AccessRights -eq "FullAccess" -and $_.IsInherited -eq $false -and $_.User.toString() -like '*\*'} | %{$_.User.toString().split("\")[1]}
Danke nochmal für die Hilfe und frohe Weihnachten!


Berthold
Bitte warten ..
Ähnliche Inhalte
Outlook & Mail
Outlook 2013 und Exchange 2013
gelöst Frage von sunicsOutlook & Mail2 Kommentare

Hallo zusammen, Wir verwenden Outlook 2013 und Exchange 2013 SP1, CU9. Wir haben nun folgendes Problem: Wenn sich der ...

Exchange Server
Outlook 2013 - Exchange 2013
gelöst Frage von r00t-1337Exchange Server2 Kommentare

Hallo zusammen, ich habe ein Problem mit den Clients welche sich zum Exchange-Server verbinden. Clients = Office 2013 (mit ...

Outlook & Mail
Outlook 2013 bzw. Exchange 2013
gelöst Frage von ioioioOutlook & Mail2 Kommentare

Hallo Zusammen, ich benötige einen Tipp. Ich habe das Problem das mir in Outlook beim schreiben einer neuen E-Mail ...

Exchange Server
Outlook 2013 kann sich nicht mit Exchange 2013 verbinden
gelöst Frage von freiliExchange Server2 Kommentare

Hallo Community! Folgendes Scenario: Im Rechenzentrum sind Domänencontroller ("SRV-KUNDE-DC"), Exchange ("SRV-KUNDE-EX") und Terminalserver ("SRV-KUNDE-TS") Vor Ort sind Windows 7/10 ...

Neue Wissensbeiträge
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 1 TagWindows 107 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 1 TagSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 2 TagenInternet5 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 2 TagenDSL, VDSL2 Kommentare

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Heiß diskutierte Inhalte
Batch & Shell
Kann man mit einer .txt Datei eine .bat Datei öffnen?
gelöst Frage von HelloWorldBatch & Shell20 Kommentare

Wie schon im Titel beschrieben würde ich gerne durch einfaches klicken auf eine Text oder Word Datei eine Batch ...

Router & Routing
OpenWRT bzw. L.E.D.E auf Buffalo WZR-HP-AG300H - update
gelöst Frage von EpigeneseRouter & Routing11 Kommentare

Guten Tag, ich habe auf einem Buffalo WZR-HP-AG300H die alternative Firmware vom L.E.D.E Projekt geflasht. Ich bin es von ...

LAN, WAN, Wireless
WLAN Reichweite erhöhen mit neuer Antenne
gelöst Frage von gdconsultLAN, WAN, Wireless8 Kommentare

Hallo, ich besitze einen TL-WN722N USB-WLAN Dongle mit einer richtigen Antenne. Ich frage mich jetzt ob man die Reichweite ...

Windows Server
Ping auf einen bestimmten Server nicht möglich
gelöst Frage von a.thierWindows Server7 Kommentare

Hallo, ich habe folgendes Problem. srv-dc1: Ping srv-nav > geht Ping srv-exchange > geht nicht srv-exchange: Ping srv-dc1 > ...