This year's MCT Summit Middle East took place on 19-20 March, with two full days of content about Microsoft technologies. Four session tracks plus a workshop track offered possibilities to learn and share knowledge, not only with the MCT community.
The session recording will be made available on the event website.
I enjoyed talking about Exchange Hybrid, what it is, why you need it and how you implement it using the Hybrid Configuration Wizard.
My PowerPoint presentation is available on Slideshare.
I look forward to next years' event.
I am honored to be a speaker at the Virtual Scottish Summit 2021 conference, taking place on Saturday, 27. February.
The Scottish Summit is a truly European event. You can choose from 365 sessions covering mostly any about Microsoft 365 workloads in seven languages:
Attend my session when you are interested in the challenges of implementing Exchange Server Hybrid, and the requirements to make it work with Microsoft Teams and on-premises mailboxes.
My session at Scottish Summit 2021:
See you online for the Virtual Scottish Summit.
I am honored to speak at Teams Nation 2021 on 12th May about Microsoft Teams Admin Roles and Teams Admin Center.
Register today and visit my session in room Teams Nation Germany (TCD). As suspected, the session will be in German.
Teams Nation is a community conference and offers 115 sessions in 11 tracks.
Visit the conference site and register today.
Wouldn't it be nice if you could stay in Microsoft Teams even when working with your emails? Microsoft Teams is getting even more mature by providing an App for integrating Outlook into the Microsoft Teams client.
At least it seems that this is the case. or was it?
Last week a new App, still in preview, showed up in the Teams Admin Center (TAC) of some demo tenants. I filtered the list of available apps using Outlook as a search term.
When selecting the app, the details showed that the app was still in preview (v0.41).
As long as the app is enabled within Teams, you can add the app to a Teams Setup Policy and make it available for users.
Your users can then access the Outlook App using the Teams app bar.
You can simply click on Outlook in the app bar and, voilá, you have your Outlook inbox in Microsoft Teams. Due to the architecture of Microsoft Teams, you have access to your Outlook on the Web version of your inbox.
Enjoy Microsoft Teams and Microsoft Outlook. - And remember today's date.
Azure AD Pass-through authentication (PTA) recommends that you run at least three authentication agents to provide high availability for authentication.
When you download and install the PTA agent, registering the PTA agent to Azure AD might fail. This happens most of the time when the network connectivity to Azure AD requires the use of a proxy server. In such a network setup you normally encounter configuration errors only, if the proxy server is misconfigured or the Internet Explorer zone configuration is missing required entries for trusted sites.
When you encounter an error during installation and registration of the dedicated PTA agent I recommend to separate these two steps. You need the credentials of an Azure AD account that is a member of the Global Administrator management group.
AADConnectAuthAgentSetup.exe REGISTERCONNECTOR="false" /q
# navigate to the default installation location cd "C:\Program Files\Microsoft Azure AD Connect Authentication Agent" # enter the global admin credentials $cred = Get-Credential # register the PTA agent using the RegisterConnector.ps1 script # multiline example .\RegisterConnector.ps1 ` -ModulePath "C:\Program Files\Microsoft Azure AD Connect Authentication Agent\Modules\" ` -ModuleName "PassthroughAuthPSModule" ` -AuthenticationMode Credentials ` -UserCredentials $cred ` -Feature PassthroughAuthentication # single line example .\RegisterConnector.ps1 -ModulePath "C:\Program Files\Microsoft Azure AD Connect Authentication Agent\Modules\" -ModuleName "PassthroughAuthPSModule" -AuthenticationMode Credentials -UserCredentials $cred -Feature PassthroughAuthentication
The Azure AD Pass-through agent Quickstart documentation has an example for automating the installation of the PTA agent as part of a server provisioning process. The current example references the wrong PowerShell module named AppProxyPSModule. The most recent release of the PTA agent does not contain a PowerShell module by that name. Use the PowerShell module PassthroughAuthPSModule, as shown in the PowerShell example shown above.
Enjoy Azure AD!
Once upon a time at an Exchange Conference near you, a member of the Exchange Product Group (PG) announced that the very last Exchange Server will go away when having an active Exchange hybrid setup.
This was a hot topic for discussions at the Microsoft Exchange Conferences (MEC, @IamMEC) in 2012 and 2014, already. Since then the Exchange PG came up with a number of reasons why this is not possible. The question on when we will finally be able to remove the very last Exchange Server from the on-premises Exchange organization was asked every year at the Ignite Conference.
Currently, the supported scenario for hybrid configurations between your on-premises Exchange organization and Exchange Online requires that you keep the last Exchange Server for creating, and managing Exchange related objects, even if those objects are located in Exchange Online.
The following diagram illustrates the current requirements:
In the past, there was communication on certain interim solutions that were supposed to support you in removing the last Exchange Server from your Exchange organization. Such interim solutions were:
At Ignite those solutions even made it into the official session catalog:
All those interim solutions leave your on-premises Exchange organization and the Active Directory configuration in an uncomfortable twilight-zone. It was still something that worked somehow, but you knew it was officially not supported, and the secure and stable operation of the hybrid configuration was at risk.
But wait...
Removing the last Exchange Server is supported! (at least when all components are released)
The new approach for managing your Exchange Online tenancy after migrating your on-premises Exchange organization to Exchange Online does not require an on-premises Exchange Server.
The new mode of operation reduces your on-premises requirements to:
The following diagram illustrates the new modern Exchange Online Management experience:
Simply you remove the requirement to use on-premises Exchange Server to write to your on-premises Active Directory. Instead, Azure AD Connect uses a new synchronization capability to handle the new Exchange Management experience in the AAD Connect MetaVerse. The on-premises AD-connector writes the changes to Active Directory which keeps the Active Directory up-to-date for all other on-premises solutions that require identities to have a proper state.
You execute all Exchange-related actions using the new Exchange Online Management PowerShell module, or, if needed, the new Modern Exchange Admin Center (EAC, which was announced at Ignite 2019.
Before you uninstall the last Exchange Server from your on-premises Exchange organization, ensure that you
PS C:\> Get-WindowsFeature Display Name Name Install State ------------ ---- ------------- [ ] Active Directory Certificate Services AD-Certificate Available [ ] Certification Authority ADCS-Cert-Authority Available [ ] Certificate Enrollment Policy Web Service ADCS-Enroll-Web-Pol Available [ ] Certificate Enrollment Web Service ADCS-Enroll-Web-Svc Available [ ] Certification Authority Web Enrollment ADCS-Web-Enrollment Available [ ] Network Device Enrollment Service ADCS-Device-Enrollment Available [ ] Online Responder ADCS-Online-Cert Available [ ] Active Directory Domain Services AD-Domain-Services Available [ ] Active Directory Federation Services ADFS-Federation Available [ ] Active Directory Lightweight Directory Services ADLDS Available [ ] Active Directory Rights Management Services ADRMS Available [ ] Active Directory Rights Management Server ADRMS-Server Available [ ] Identity Federation Support ADRMS-Identity Available [ ] Device Health Attestation DeviceHealthAttestat... Available [ ] DHCP Server DHCP Available [ ] DNS Server DNS Available [ ] Exchange Online Remote Features EXORemote Available [ ] Fax Server Fax Available [X] File and Storage Services FileAndStorage-Services Installed [X] File and iSCSI Services File-Services Installed [X] File Server FS-FileServer Installed [ ] BranchCache for Network Files FS-BranchCache Available [...]
PS C:\> Install-WindowsFeature -Name EXORemote Display Name Name Install State ------------ ---- ------------- [ ] Active Directory Certificate Services AD-Certificate Available [ ] Certification Authority ADCS-Cert-Authority Available [ ] Certificate Enrollment Policy Web Service ADCS-Enroll-Web-Pol Available [ ] Certificate Enrollment Web Service ADCS-Enroll-Web-Svc Available [ ] Certification Authority Web Enrollment ADCS-Web-Enrollment Available [ ] Network Device Enrollment Service ADCS-Device-Enrollment Available [ ] Online Responder ADCS-Online-Cert Available [ ] Active Directory Domain Services AD-Domain-Services Available [ ] Active Directory Federation Services ADFS-Federation Available [ ] Active Directory Lightweight Directory Services ADLDS Available [ ] Active Directory Rights Management Services ADRMS Available [ ] Active Directory Rights Management Server ADRMS-Server Available [ ] Identity Federation Support ADRMS-Identity Available [ ] Device Health Attestation DeviceHealthAttestat... Available [ ] DHCP Server DHCP Available [ ] DNS Server DNS Available [X] Exchange Online Remote Features EXORemote Installed [ ] Fax Server Fax Available [X] File and Storage Services FileAndStorage-Services Installed [X] File and iSCSI Services File-Services Installed [X] File Server FS-FileServer Installed [ ] BranchCache for Network Files FS-BranchCache Available [...]
Even though not explicitly stated, you should restart the server after installing the Windows feature.
As part of the next AAD Connect synchronization cycle, the magic happens.
Verify that you can edit the Exchange related attributes of synchronized Active Directory objects in Exchange Online or Azure AD before you remove your last Exchange Server.
Whey ready to uninstall the last Exchange Server you must use the following command line parameters to remove the server as intended. Otherwise, you'll leave the Exchange organization in an inchoate state. Ensure that you use an administrative PowerShell session.
./Setup.exe /mode:uninstall /SwitchToMEMA /IAcceptExchangeOnlineLicenseTerms
Normally, you do not have to accept license terms when uninstalling Exchange Server, but in this case, you have to accept the Exchange Online license terms.
Enjoy the modern experience and management options of Exchange Online!
Exchange Conferences
This blog post is about creating an Twitter Bot to tweet messages using Azure Automation. The steps and the script itself are based on Trevor Sullivan's TechNet Gallery post. His post assumes that you are familiar with some Azure Automation steps. So I am going to describe the required steps in more detail.
You'll need the following components to setup your personal Twitter Bot.
First you'll need to create a Twitter application to reference your Azure Automation bot. The authentication information of your Twitter application will be needed in step 2.
The information required are
You need to create a new Twitter application by accesssing the following link: https://apps.twitter.com/
Ensure that you've added your mobile phone number to your Twitter account before creating a new Twitter application. This is a requirement for creating Twitter applications.
Log on to Twitter using the Twitter account you want your Twitter Bot to post as.You'll see something similar as this:
Just click Create New App.
Enter the information as needed. The application name must be a globally unique name. So it might be tricky to find a suitable application name. Click Create your Twitter application to finally create the application.
Select Keys and Access Tokens and copy the Consumer Key (API Key) and the Consumer Secret (API Secret) value into a text editor of your choice.
Further down on the same web page you'll find the Your Access Token section.
Click Create my access token.
After you've created the access token, copy the Access Token and the Access Token Secret to your text editor document. You'll need all four values in just a moment.
The Azure automation component will require application credentials for posting Tweets on your behalf. These required credentials are stored in a JSON file. Yo do not need top worry about the JSON data format.
The PoshTwit PowerShell module helps you to create the required JSON file.
The simpliest way to get the PoshTwit module is by installing the module directly from the PowerShell Gallery using an Administrative PowerShell session.
Install-Module PoshTwit
If you cannot use the Install-Module cmdlet, use the link provided in the Links section.
Remember that this step is only needed to create the JSON file containing the required credential information for Azure Automation.
After you've successfully installed the PoshTwit module, call the Set-PoshTwitToken cmdlet using all four Twitter app credential information to create the authentication JSON file.
Set-PoshTwitToken -ConsumerKey [YourConsumerKey] -ConsumerSecret [YourConsumerSecret] -AccessToken [YourAccessToken] -AccessSecret [AccessSecret]
The JSON file wil be created in the PowerShell module installtion folder. Which is by default:
C:\Program Files\WindowsPowerShell\Modules\PoshTwit\0.1.6
The version number might differ depending on the version you've installed.
Open the token.json file and copy the content to your text editor. The content of the token.json file will be the password for the Azure Automation credential object. The content will look like this:
{"ConsumerKey":"9FX***********","ConsumerSecret":"4kIxa***********","AccessToken":"24540854***********","AccessSecret":"OSYP***********"}
You should see your Twitter application authentication information. You will nedd to copy & paste this string including the curly brackets as account credentials at a later step.
Log on to the Azure Portal and create a new Azure Automation account. The Azure Automation will host your automation runbooks, variables and other settings. You can have multiple Azure Automation accounts. This is especially usefull when you want to delegate access and control of Automation accounts to different members of staff.
Click '+', enter Auto as search text and select Automation.
Click Create on the next blade.
Configure your new Azure Automation account by using a unique name, select the appropriate Azure subscription, create a new Resource Group or use an existing, select the Azure location, leave Yes as the default option for creating an Azure Run As account, select the checkbox to pin the Azure Automation account to your Azure dashboard, and click Create.
After you've been redirected to the Azure Dashboard wait for the Azure Automation Account to be created. If you are not redirected to the Azure Automation blade automatically, select the Automation Account tile on the Azure dashboard.
Select Process Automation - Runbooks. You'll notice two tutorials and two tutorial scripts which are automatically provisioned for you.
Click Add a runbook to create the Twitter Bot runbook.
The next step requires that you've download the Tweet-PowerShellTips.ps1 script. If you haven't, download it now.
Select Import an exisiting runbook and browse for the downloaded PowerShell script on the next blade. After selecting the PowerShell file the fiel will be uploaded and validated automatically. The Runbook type and Runbook name properties will be set automatically for you. Just enter a short description for your runbook. Click Create.
The uploaded PowerShell script utilizes the PoshTwit PowerShell module. This PowerShell module needs to be available within the Azure Automation account as well. Additonal PowerShell modules are configured within the Shared Resources section of your Azure Automation account. The PoshTwit module is added from the PowerShell Gallery.
Select Modules Gallery, enter PoshTwit as search text and press Enter, click the PoshTwit search result tile.
Click Import to import the PowerShell module to thre shared ressources of your Azure Automation account. Click OK on the following blade. Close the PoshTwit module blade.
Now you'll add the required Twitter application credentials to the Shared Resources of the Azure Automation account.
Select Shared Resources - Credentials and click Add a credential.
Use TwitterCredential as Name and User name. The variable is accessed by the PowerShell script using the cmdlet
Get-AutomationPSCredential -Name TwitterCredential
Now copy and paste the full JSON file content as Password and Password confirmation. Click Create to save the new credential information.
Select the new runbook from the list of runbooks to edit the runbook properties.
Click Edit to edit the PowerShell code to adjust the tweets to match your needs (at least). YOu are able to edit the PowerShell code directly from the browser window.
Ensure to click Save, after you've edited the PowerShell code.
Each time you've edited an Azure Runbook, you need to publish the new version of the runbook. Click Publish and confirm the publishing with Yes.
You can test your runbook using the Test pane. The script itself will not write any output to the output windows, as the script does not use any Write-Output cmdlets.
You can add the following PowerShell code to the script to output the Tweet Id and Tweet text.
Write-Output "Publish Tweet $($TweetId) | $($TweetList[$TweetId])"
As a last step you need to create a schedule to post random tweets automatically. Automation schedules are created as shared resources again.
Select Shared Resources - Schedules and click Add a schedule.
Configure a schedule name, the start date, the schedule time zone, and the recurring interval. Click Create.
Select your runbook to link the just created schedule.
Select Schedules and click Add a schedule.
Click Link a schedule to your runbook, select the schedule and click OK.
The runbook schedules overview will show an information when the next run will be initiated.
That's it. Your Azure Automation Twitter Bot is up and running.
Now you can simply edit the runbook, add new tweets to the string array, save the changes and publish the changed runbook for production use. As long as the changes are not published, Azure Automation will use the last published version of the runbook.
Enjoy Azure.
This is the source code of the updated PowerShell script.
# Array of tweets # Ensure that the length of each tweet does not exceed 140 characters # Ensure to have at least 2 entries $TweetList = @( 'Find more #PowerShell #scripts at http://scripts.granikos.eu ', 'More #Office365 and #MSFTExchange tips at http://JustCantGetEnough.granikos.eu ' ) # Get a tweet text by random $TweetId = Get-Random -Minimum 0 -Maximum ($TweetList.Count - 1); # Fetch automation credentials $TwitterCredential = Get-AutomationPSCredential -Name TwitterCredential; $TwitterCredential = ConvertFrom-Json -InputObject $TwitterCredential.GetNetworkCredential().Password; # Provision the tweet $Tweet = @{ ConsumerKey = $TwitterCredential.ConsumerKey; ConsumerSecret = $TwitterCredential.ConsumerSecret; AccessToken = $TwitterCredential.AccessToken; AccessSecret = $TwitterCredential.AccessSecret; Tweet = $TweetList[$TweetId]; }; # Publish the tweet Publish-Tweet @Tweet;