patrickebert
Goto Top

Exchange 2013 Aktivieren und Deaktivieren von OWA und Activesync

Hallo Liebe Leute,

da mir bisher immer sehr gut geholfen wurden konnte in diesem Forum, wende ich mich wieder an euch.
In Anbetracht auf folgendes Powershell-Script Activesync habe ich versucht das Script für mich ein wenig anzupassen, da es bei mir im Exchange 2013 Cu11 nicht funktioniert.

Hier mein derzeitiger Codeschnipsel:

#Activesync und OWA für alle deaktivieren 
$sans = Get-ADGroupMember -Identity Domänen-Benutzer -Recursive | select Samaccountname
foreach ($san in $SaNs)
{$mails = get-mailbox $san |select PrimarySmtpAddress}
foreach ($mail in $mails)
{set-casmailbox $mail -IgnoreDefaultScope -ActiveSyncEnabled $false -OWAenabled $false}

# Activesync Gruppenmitglieder enablen
$SaNs = Get-ADGroupMember -Identity Activesync | select Samaccountname
foreach ($san in $SaNs)
{$mails = get-mailbox $san |select PrimarySmtpAddress}
foreach ($mail in $mails)
{set-casmailbox $mail -IgnoreDefaultScope -ActiveSyncEnabled $true}

# OWA Gruppenmitglieder enablen
$SaNs = Get-ADGroupMember -Identity owa | select Samaccountname
foreach ($san in $SaNs)
{$mails = get-mailbox $san |select PrimarySmtpAddress}
foreach ($mail in $mails)
{set-casmailbox $mail -IgnoreDefaultScope -OWAEnabled $true}

Leider komme ich hier nicht weiter.
Ich denke ich habe hier folgenden Fehler begangen, den ich aber auch nicht wüsste wie ich Ihn lösen könnte
und zwar denke ich:
Get-ADGroupMember -Identity Domänen-Benutzer -Recursive | select Samaccountname

Listet es mir folgendermaßen auf:

Samaccountname
User1
User 2

Das selbe, denke ich, auch ist auch bei :
get-mailbox $san |select PrimarySmtpAddress

PrimarySmtpAddress
user1@test.com
user2@test.com

und hier vermute ich den Fehler da er mir immer noch zum Anfang
Samaccountname sowie PrimarySmtpAddress ausgibt.

Lieg ich denn da richtig?
Kann mir hier bezüglich des Fehlers jemand Tipps geben?

Content-ID: 301156

Url: https://administrator.de/contentid/301156

Ausgedruckt am: 25.11.2024 um 08:11 Uhr

114757
Lösung 114757 07.04.2016 aktualisiert um 10:20:27 Uhr
Goto Top
Einfach die Eigenschaft expandieren sonst sind es noch Objekte und du müsstest in den Schleifen die Eigenschaft zusätzlich mit einem Punkt hinter der Lauf-Variablen abrufen.
 .... | select -Expand Samaccountname 

Gruß jodel32
patrickebert
patrickebert 07.04.2016 um 10:31:13 Uhr
Goto Top
Perfekt, das hat mir schon geholfen... Nur leider bekomme ich jetzt einen anderen Fehler face-smile
Also liegt es wohl nicht an meinen vorher gedachten Problem face-sad

Die Argumenttransformation für den Parameter "Identity" kann nicht verarbeitet werden. Der Wert
"user1@test.com" vom Typ "Microsoft.Exchange.Data.SmtpAddress" kann nicht in den Typ
"Microsoft.Exchange.Configuration.Tasks.MailboxIdParameter" konvertiert werden.
+ CategoryInfo : InvalidData: (face-smile [Set-CASMailbox], ParameterBindin...mationException
+ FullyQualifiedErrorId : ParameterArgumentTransformationError,Set-CASMailbox
+ PSComputerName : ex01.local
114757
Lösung 114757 07.04.2016 aktualisiert um 10:36:00 Uhr
Goto Top
Selbes Problem nur Zeile 11 face-wink

Wie gesagt wenn du Objekte nicht expandierst musst du später den Eigenschaftsnamen angeben ($mail.PrimarySmtpAddress) wenn die Eigenschaft aus dem Objekt erhalten willst, logisch!
patrickebert
patrickebert 07.04.2016 um 10:38:18 Uhr
Goto Top
$sans = Get-ADGroupMember -Identity Domänen-benutzer -Recursive | select -expand Samaccountname
foreach ($san in $SaNs)
{$mails = get-mailbox $san |select -Expand PrimarySmtpAddress}
foreach ($mail in $mails)
{set-casmailbox $mail -IgnoreDefaultScope -ActiveSyncEnabled $false -OWAenabled $false}

Habe ich eigentlich bei allen gemacht (Zeile 2, 4, 9, 11, 16, 18)
114757
Lösung 114757 07.04.2016 aktualisiert um 11:13:00 Uhr
Goto Top
Ach ich seh den Fehler, SMTPAddress ist kein String sondern ebenfalls noch ein Objekt das wandelst du vorher auch noch in einen String um, deswegen auch die Fehlermeldung wegen des Objekttyps.

$mails = get-mailbox $san  | %{$_.PrimarySmtpAddress.toString()}
patrickebert
patrickebert 07.04.2016 um 11:09:28 Uhr
Goto Top
MMhm leider immer noch nicht der gewünschte Erfolg

bei
$mails = get-mailbox $san  | %{PrimarySmtpAddress.toString()}
wird noch ein Ausdruck erwartet...

Was macht denn diese Prozent Zeichen? um dies auch mal zu verstehen was dort gemacht wird face-smile
114757
Lösung 114757 07.04.2016 aktualisiert um 11:15:35 Uhr
Goto Top
Ach sorry, Tippfehler meinerseits ist oben korrigiert. Das %{} ist die Abkürzung für eine FOREACH-Schleife,
genau so wie ?{} für ein WHERE-Object, und das $_ ist das aktuelle Objekt in der Pipeline.
$mails = get-mailbox $san | %{$_.PrimarySmtpAddress.toString()}
patrickebert
patrickebert 07.04.2016 aktualisiert um 11:24:18 Uhr
Goto Top
Das % ist sozusagen auch einen foreach schleife, wenn ich das richtig interpretiert habe...

Hier nun nochmal mein Gesamter Code

#Activesync und OWA für alle deaktivieren 
$sans = Get-ADGroupMember -Identity Domänen-Benutzer -Recursive| select -expand Samaccountname
foreach ($san in $SaNs)
{$mails = get-mailbox $san  |%{($_.PrimarySmtpAddress).toString()}}
foreach ($mail in $mails)
{set-casmailbox $mail  -ActiveSyncEnabled $false -OWAenabled $false}

# Activesync Gruppenmitglieder enablen
$SaNs = Get-ADGroupMember -Identity Activesync | select -expand Samaccountname
foreach ($san in $SaNs)
{$mails = get-mailbox $san  | %{($_.PrimarySmtpAddress).toString()}}
foreach ($mail in $mails)
{set-casmailbox $mail  -ActiveSyncEnabled $true}

# OWA Gruppenmitglieder enablen
$SaNs = Get-ADGroupMember -Identity owa | select -expand Samaccountname
foreach ($san in $SaNs)
{$mails = get-mailbox $san  |%{($_.PrimarySmtpAddress).toString()}}
foreach ($mail in $mails)
{set-casmailbox $mail  -OWAEnabled $true}

Edit:
Danke Jodel, hast mir super geholfen face-smile

War wieder ein schwere Geburt von mir face-smile
114757
Lösung 114757 07.04.2016 aktualisiert um 11:32:38 Uhr
Goto Top
Man lernt ja nie aus...
Hier nun nochmal mein Gesamter Code
Was sich auch auf 3 Zeilen abkürzen lässt face-smile
Get-ADGroupMember -Identity Domänen-Benutzer -Recursive | %{set-casmailbox ((Get-Mailbox $_.SamAccountName).PrimarySmtpAddress.toString()) -ActiveSyncEnabled $false -OWAenabled $false}
Get-ADGroupMember -Identity ActiveSync -Recursive | %{set-casmailbox ((Get-Mailbox $_.SamAccountName).PrimarySmtpAddress.toString()) -ActiveSyncEnabled $true}
Get-ADGroupMember -Identity OWA -Recursive | %{set-casmailbox ((Get-Mailbox $_.SamAccountName).PrimarySmtpAddress.toString()) -OWAEnabled $true}
Gruß jodel
patrickebert
patrickebert 07.04.2016 aktualisiert um 11:47:06 Uhr
Goto Top
So gut bin ich noch nicht ;)
Aber dann gleich mal eine andere Frage, wie Frage ich denn ab, welche Benutzer Activesync aktiviert haben zurzeit?
das ist doch bestimmt für dich auch ein Einzeiler und in 2sek. erledigt :D

Hab´s
Get-CASMailbox -ResultSize Unlimited | where { $_.ActiveSyncEnabled -eq 'True'} | ft name, activesyncenabled   
114757
114757 07.04.2016 aktualisiert um 12:06:39 Uhr
Goto Top
Ein
....| ?{$_.ActiveSyncEnabled} | ....
würde auch reichen.

p.s. der String-Vergleich geht, aber ist schlechter Stil, denn das ist eigentlich ein Boolean Wert. Wenn in dieser Art dann besser so:
$_.ActiveSyncEnabled -eq $true

Guckst du:
ActiveSyncEnabled Property bool ActiveSyncEnabled {get;set;}