129 lines
3.8 KiB
PowerShell
129 lines
3.8 KiB
PowerShell
<#
|
|
.SYNOPSIS
|
|
Create a Microsoft Teams Room Device in Office 365
|
|
|
|
.DESCRIPTION
|
|
Create and setup a Microsoft Teams Room Device in Microsoft Office 365
|
|
|
|
.NOTES
|
|
Review the variable here.
|
|
|
|
You must be connected to the following Services:
|
|
- Exchange Online
|
|
- MSOL (Not AzureAD!)
|
|
- Skype for Business Online (Not Teams!)
|
|
|
|
.LINK
|
|
https://hochwald.net/microsoft-teams-room-device-1-2/
|
|
|
|
.LINK
|
|
https://hochwald.net/microsoft-teams-room-device-2-2/
|
|
#>
|
|
[CmdletBinding(ConfirmImpact = 'Low')]
|
|
param ()
|
|
|
|
# Display Name of the Room
|
|
$RoomName = 'Your-Teams-Room'
|
|
|
|
# Alias of the Room (For the UPN, SMTP, and SIP Address)
|
|
$RoomAlias = 'YourTeamsRoom'
|
|
|
|
# Keep this safe
|
|
$RoomPassword = 'YourSuperSecretRoomPassword'
|
|
<#
|
|
At the moment, the password for a room/resource will never expire!
|
|
So keep this in a safe place. And there is no second factor (MFA).
|
|
#>
|
|
|
|
# The Domain for the UPN, and the SMTP address
|
|
$RoomDomain = 'contoso.com'
|
|
|
|
# The Response text for meeting requests
|
|
$RoomAdditionalResponse = 'This is a Microsoft Teams Team Room'
|
|
<#
|
|
Basic HTML is supported here!
|
|
This text will be in the meeting respoinse mail, so use it as a info or teaser
|
|
#>
|
|
|
|
# The ALIAS of the license to apply.
|
|
# In this case it is the MEETING_ROOM License in the tenant with the name contoso
|
|
$RoomLicence = 'contoso:MEETING_ROOM'
|
|
<#
|
|
The license must be availible (Buy it before create the room)
|
|
#>
|
|
|
|
# We need one User that we use to find the SIP Registrar Pool (For Skype for Business and Teams SIP handling)
|
|
$CsOnlineUser = 'john.doe'
|
|
|
|
#region AutomatedStrings
|
|
# Build some strings
|
|
$RoomUserPrincipalName = ($RoomAlias + '@' + $RoomDomain)
|
|
$CsOnlineUserTemplate = ($CsOnlineUser + '@' + $RoomDomain)
|
|
<#
|
|
I use the same domain for the UPN and the SMTP/SIP address,
|
|
and I highly recommend you to do the same!
|
|
#>
|
|
#endregion AutomatedStrings
|
|
|
|
#region NewMailbox
|
|
# Create the Mailbox
|
|
$paramNewMailbox = @{
|
|
Name = $RoomName
|
|
Alias = $RoomAlias
|
|
Room = $true
|
|
EnableRoomMailboxAccount = $true
|
|
MicrosoftOnlineServicesID = $RoomUserPrincipalName
|
|
RoomMailboxPassword = (ConvertTo-SecureString -String $RoomPassword -AsPlainText -Force)
|
|
}
|
|
New-Mailbox @paramNewMailbox
|
|
#endregion NewMailbox
|
|
|
|
#region SetCalendarProcessing
|
|
# Tweak Calendar settings
|
|
$paramSetCalendarProcessing = @{
|
|
Identity = $RoomName
|
|
AutomateProcessing = 'AutoAccept'
|
|
AddOrganizerToSubject = $false
|
|
DeleteComments = $false
|
|
DeleteSubject = $false
|
|
RemovePrivateProperty = $false
|
|
AddAdditionalResponse = $true
|
|
AdditionalResponse = $RoomAdditionalResponse
|
|
}
|
|
Set-CalendarProcessing @paramSetCalendarProcessing
|
|
<#
|
|
Please review the parameters above!
|
|
They might not match your taste or requirements
|
|
You can add more: Use 'Get-Help Set-CalendarProcessing -details' to see all supported paramaters
|
|
#>
|
|
#endregion SetCalendarProcessing
|
|
|
|
#region SetMsolUser
|
|
# Usage location and password tweak
|
|
$paramSetMsolUser = @{
|
|
UserPrincipalName = $RoomUserPrincipalName
|
|
PasswordNeverExpires = $true
|
|
UsageLocation = 'DE'
|
|
}
|
|
Set-MsolUser @paramSetMsolUser
|
|
#endregion SetMsolUser
|
|
|
|
#region SetMsolUserLicense
|
|
# Apply the license
|
|
$paramSetMsolUserLicense = @{
|
|
UserPrincipalName = $RoomUserPrincipalName
|
|
AddLicenses = $RoomLicence
|
|
}
|
|
Set-MsolUserLicense @paramSetMsolUserLicense
|
|
#endregion SetMsolUserLicense
|
|
|
|
#region EnableCsMeetingRoom
|
|
# Enable SIP (Skype for Business/Teams)
|
|
$paramEnableCsMeetingRoom = @{
|
|
Identity = $RoomUserPrincipalName
|
|
RegistrarPool = (Get-CsOnlineUser -Identity $CsOnlineUserTemplate | Select-Object -ExpandProperty RegistrarPool)
|
|
SipAddressType = 'EmailAddress'
|
|
}
|
|
Enable-CsMeetingRoom @paramEnableCsMeetingRoom
|
|
#endregion EnableCsMeetingRoom
|