Unser Datenschützer wollte eine Übersicht über alle Gäste und den dazugehörigen Teams. Das kleine Skript erledigt diese Aufgabe für euch.
# Connect to Microsoft Teams
Connect-MicrosoftTeams
# Get all Guests and Teams
$Teams = Get-Team
$GuestUser = foreach ($Team in $Teams)
{
Get-TeamUser -GroupId $Team.GroupId | Where-Object -FilterScript {$_.Role -eq 'Guest'} | Select-Object -Property User, Role, @{n = 'TeamName';e = {$Team.DisplayName} }
}
#Export-CSV
$paramExportCsv = @{
Path = "c:\Externe\ExterneUser.csv"
Force = $true
Encoding = 'UTF8'
Delimiter = ';'
NoTypeInformation = $true
}
$GuestUser | Export-Csv @paramExportCsv
Problem : Beim Versuch eine DistributionGroup zu bearbeiten erscheint die Meldung das man nicht über ausreichend Rechte verfügt.
Sie verfügen nicht über ausreichende Berechtigungen. Dieser Vorgang kann nur von einem Manager der Gruppe ausgeführt werden.
+ CategoryInfo : NotSpecified: (:) [Remove-DistributionGroup], OperationRequiresGroupManagerException
Lösung : Das Problem ist schnell mit Powershell gefixt.
Set-DistributionGroup -Identity VERTEILEREMAIL -ManagedBy "NEUERUSER" -BypassSecurityGroupManagerCheck
wenn der vorhandene Owner nicht überschrieben werden soll dann kann man diesen Befehl verwenden zu hinzufügen neuer Owner
Set-DistributionGroup -Identity 'VERTEILEREMAIL' -ManagedBy @{Add='USER1','USER2'} -BypassSecurityGroupManagerCheck -WhatIf
Quelle :
https://docs.microsoft.com/de-de/exchange/troubleshoot/groups/no-sufficient-permissions-moving-dg
Erstmal eins Vorweg , und ja ich muss mir das auch merken
Im Hybrid Exchange Mode müssen alle Befehle gegen den lokalen Exchange ausgeführt werden !
Auch hier ist das
WhatIf auf
true gesetzt d.h. hier wird nur getestet aber nicht ausgeführt. Ist man sich sicher kann man das
true auf
false ändern.
<# Mailcontact #>
$NewMailContactParameter = @{
Name = 'demo-contact'
Alias = 'demo-contact'
DisplayName = 'demo-contact'
OrganizationalUnit = 'OU=dev_mailobjects,OU=dev,DC=example,DC=box'
ExternalEmailAddress = 'demo-contact@service.example.box'
WhatIf = $true
}
New-MailContact @NewMailContactParameter
testen ob alles funktioniert hat kann man das mit dem Befehl
Get-Recipient demo-contact@service.example.box
Name RecipientType
---- -------------
demo-contact MailContact
Zuerst muss die
Verbindung zu MSOL stehen.
Dann kann man mit dem folgenden Befehl alle Lizenzen abfragen.
Connect-MsolService
Get-MsolAccountSku | select SkuPartNumber,ActiveUnits,ConsumedUnits
Eine Übersicht aller User und den verwendeten Lizenzen kann man hiermit abfragen.
$AllUsers = Get-MsolUser | select UserPrincipalName, FirstName, LastName, DisplayName, Office -ExpandProperty Licenses
$AllUsers = $AllUsers | Where-Object -FilterScript {
# remove guests
$_.UserPrincipalName -notlike '*#EXT*'
}
$AllUsers | ft -Property UserPrincipalName,AccountSkuId -GroupBy UserPrincipalName
Erstmal eins Vorweg , und ja ich muss mir das auch merken
Im Hybrid Exchange Mode müssen alle Befehle gegen den lokalen Exchange ausgeführt werden !
Wenn man nun eine neue Shared Mailbox haben möchte kann man das mit diesem snippet in der Exchange Shell machen. Auch hier ist das
WhatIf auf
true gesetzt d.h. hier wird nur getestet aber nicht ausgeführt. Ist man sich sicher kann man das
true auf
false ändern.
$NewRemMailPara = @{
Name = 'NAME_DER_SHARED_MAILBOX'
OnPremisesOrganizationalUnit = 'OU_IM_LOKALEN_AD'
DisplayName = 'DISPLAYNAME_DER_SHARED_MAILBOX'
UserPrincipalName = 'UPN_DER_MAILBOX'
RemoteRoutingAddress = 'REMOTE_ROUTING_ADDRESS (normalerweise NAME@TENANT.mail.onmicrosoft.com'
Alias = 'ALIAS_DER_SHARED_MAILBOX'
PrimarySmtpAddress = 'PRIMÄRE_EMAIL_ADRESSE'
WhatIf = $true
}
New-RemoteMailbox -Shared @NewRemMailPara
hier ein Beispiel
$NewRemMailPara = @{
Name = 'TEST Team'
OnPremisesOrganizationalUnit = 'OU=dev_mailobjects,OU=dev,DC=example,DC=box'
DisplayName = 'TEST Team'
UserPrincipalName = 'test_team@DOMAIN'
RemoteRoutingAddress = 'test_team@TENANT.mail.onmicrosoft.com'
Alias = 'TEST_Team'
PrimarySmtpAddress = 'test_team@DOMAIN'
WhatIf = $true
}
New-RemoteMailbox -Shared @NewRemMailPara
Auf dem selben Weg kann man Räume und Resourcen anlegen hierzu muss nur der Parameter Shared getauscht werden. Mögliche Werte sind
-Room
-Equipment
oder ein User Postfach
Quelle :
https://docs.microsoft.com/en-us/powershell/module/exchange/new-remotemailbox?view=exchange-ps
Sollte man mal in die Verlegenheit kommen einen lokalen AD User mit einem MSOL User verbinden zu müssen ist dieser Schnipsel recht hilfreich. Er setzt im MSOL Kontext die ImmutableID was die Zuordnung lokal zu cloud User ermöglicht auch wird der online User umbenannt das der UPN gleich zu dem lokalem AD User ist. Die Vorraussetzungen sind natürlich ein voller Zugriff auf das lokale AD und eine vorherige
Anmeldung an Microsoft 365.
$OldUPN = 'UPN_ON_OFFICE365'
$UPN = 'UPN_LOKALES_AD'
$ID = [convert]::ToBase64String((Get-ADUser -filter {UserPrincipalName -eq $UPN}).objectGUid.ToByteArray())
Set-MsolUserPrincipalName -NewUserPrincipalName $UPN -UserPrincipalName $OldUPN -ImmutableId $ID