In der heutigen Zeit ist die skriptbasierte Verwaltung von Server-Softwarelösungen aus der Arbeitswelt von Administratoren nicht mehr wegzudenken. Immer mehr Produkte und cloudbasierte Dienste lassen sich nur per PowerShell und individuelle Skripte sinnvoll administrieren. Gerade Office 365 ist hier ein unrühmliches Beispiel, da jeder Dienst über eine individuelle PowerShell-Schnittstelle verfügt.
Dieser Umstand hat zur Folge, dass Sie als Administrator oft Skripte zur Verwaltung komplexer Umgebungen einsetzen müssen, die Sie nicht selbst geschrieben haben. Die Skripte werden entweder von externen Dienstleister programmiert oder einfach aus dem Internet heruntergeladen. Hierbei implementiert jedes Skript, im Idealfall, eine eigene Protokollierung der ausgeführten Aktionen.
Die PowerShell-Skripte sind in den meisten Fällen für die individuelle Ausführung durch einen Administrator konzipiert und weniger für die regelmäßige und vollautomatische Ausführung. Als Administrator möchten Sie sich aber um wichtiger Dinge kümmern, als z.B. die Anlage von Benutzerkonten im Active Directory, die E-Mail-Aktivierung von Konten oder die Erstellung von SharePoint Team-Sites.
Sie stehen u.a. vor folgenden Problemen:
Sie kommen mit der Nutzung der Windows Bordmitteln, wie dem Task Scheduler, schon recht weit. Aber Sie werden mir zustimmen, dass dieses Tool nicht gerade die bequemste Art ist, um PowerShell-Skripte sinnvoll und sicher zu automatisieren.
Ein Lösung für dieses Dilemma ist die Nutzung einer Softwarelösung, die uns ein Trennung zwischen dem ausführenden Skript-Kontext und dem Kontext des Anwenders, der ein Skript startet, bietet. Mit einem Rollen- und Berechtigungssystem kann ein Skript, in Abhängigkeit der Rollenzuweisung, unterschiedlich ausgeführt werden.
WIr benötigen also ein Lösung, die uns folgende Funktionen bietet:
Mit ScriptRunner steht eine professionelle Softwarelösung zur Verfügung, die uns all diese Möglichkeiten bietet. ScriptRunner ist ein sehr umfangreiches und leistungsfähiges Produkt zur PowerShell-Automatisierung. Aus meiner Sicht ist das Sicherheitskonzept, das für die Delegierung der Skript-Ausführungen eingesetzt wird, einer der Hauptgründe für das Produkt.
Das folgende Schaubild vereutlicht die Isoliserung von ScriptRunner für die sichere Ausführung von PowerShell-Skripten.
Grafik © ScriptRunner
Die einzelnen Schritte sind:
Die Automatisierung und die wiederkehrende Ausführung führt zu einer Reduzierung der Betriebsrisiken und minimiert kostenintensive manuelle Nacharbeiten. Dies gelingt durch die hohe Reproduzierbarkeit der immer gleichen Aufgaben (Stichwort: Erstellung von Benutzern mit unterschiedlichen Attributen, je nach Fachabteilung). Durch ein Zonenmodell und die strikte Trennung der Ausführungsberechtigungen (Anwender, Automatisiserungsdienst, Skript-Credentials) erreichen Sie ein Maximum an Betriebssicherheit.
Mit solch einer Aufteilung können Sie die Ausführung von Skripten nicht nur an das Helpdesk-Team delegieren, sondern sogar an DV-Ansprechpartner in Fachabtielungen. Die Weboberfläche ist intuitiv bedienbar und führt den Anwender sucher durch alle konfigurierten Eingabe- und Auwahlschritte.
Ab Q1 2019 werden Sie speziell für Exchange Server, Exchange Online und Office 365 entwickelte Skripte zur Nutzung mit ScriptRunner in diesem Blog finden.
Viel Spaß bei der Automatisierung!
The following PowerShell scripts have been published by our Exchange and Office 365 experts to the technical community at TechNet Gallery. Please use the GitHub repositories to report issues or to file feature requests.
Please send comments, wishes, and ideas to support@granikos.eu.
Enjoy!
Need assistance with your Exchange Server Organization? You plan to upgrade your Exchange Server Organization? You plan to migrate to Office 365? Contact us: info@granikos.eu
Update 2019-05-07: Export mailbox delegates and SMTP forwarding information added Update 2018-09-04: Add remote IP-address ranges to a receive connector added Update 2018-06-16: Manage Master Category List for Shared Mailboxes and Teams added Update 2018-04-29: Convert Word documents using PowerShell and Set Mailbox Item Private Flag added Update 2018-01-24: Create a new Room Mailbox with Security Groups added Update 2017-11-11: Export all user mailbox permissions added Update 2017-09-22: Remove Out-Of-Office rules from user mailbox added Update 2017-05-20: Parse email messages content for further processing and Update OWA vDir config across multiple servers added Update 2017-03-18: Fetch recently created public folders and Clear Private Flag on Mailbox Messages added Update 2017-02-22: Remove Orphaned HealthMailbox and SystemMailbox Accounts from MESO Container added Update 2017-02-17: Test Office 365 Domain Availability added Update 2017-02-13: Connect to Exchange Server 2013+ using remote PowerShell added Update 2017-02-07: Create Exchange internal/external Url based certificate requests, Create a scheduled task for Exchange Server 2013 added Update 2017-01-24: Gather Exchange Configuration Data added Update 2017-01-05: Export Messages from Transport Queue added Update 2016-11-29: Clean legacy public folder ACL added, Scripts categorized Update 2016-11-28: Add multiple legacy public folder replicas added Update 2016-08-18: Simple import of multiple PST files for a single user added Update 2016-07-28: Change IIS Log File settings Github Url added, Create a new Team Mailbox with Security Groups added Update 2016-06-04: GlobalFunctions added Update 2015-06-18: Copy-ReceiveConnector updated Update 2015-06-01: Exchange 2010 Public Folder Replication Report (UTF8 support) Update 2015-05-21: Copy anti-virus pattern to Exchange 2010/Exchange 2013 servers added Update 2014-12-10: Copy a receive connector from one Exchange Server to multiple Exchange Servers added
Der Start mit Microsoft 365 ist nicht immer so einfach. Im Internet findet man ein Vielzahl an Informationen, weiß jedoch nicht sofort, welche Quellen "gute" Quellen sind und welche eher "nebulösen" Charakter haben.
Die folgenden Links sollen Ihnen den Einstieg in das Thema Microsoft 365 und in die Verwaltung der Clouddienste erleichtern.
Folgende PowerShell Module benötigen Sie für die Verwaltung von Microsoft 365.
# Import des PowerShell Moduls Install-Module -Name AzureAD # Aufbau einer Verbindung zu Azure AD des globalen Office 365 Angebotes Connect-AzureAD # Aufbau einer Verbindung zu Azure AD des globalen Office 365 Angebotes (solange noch verfügbar) Connect-AzureAD -AzureEnvironmentName AzureGermanyCloud
# Verbindung zu Skype for Business Online # Import des Skype for Business PowerShell-Modules Import-Module -Name SkypeOnlineConnector # Administrator-Anmeldeinformation $Credential = Get-Credential # Erstellung einer neuen Skype for Business Online Session $SfBSession = New-CsOnlineSession -Credential $userCredential # Import der SfBSession in die aktuelle PowerShell-Session Import-PSSession SfBSession
# Import des SharePoint Online PowerShell Modules Import-Module -Name Microsoft.Online.SharePoint.PowerShell # Festlegung des UPN-Anmeldenamen des SharePoint-Administrators $UPN = 'user@varunagroup.de' # Beispiel UPN # Festlegung des Office 365 Tenant-Namen $SPOOrgName = 'VARUNAGROUP' # Beispiel Organisation # Festlegung der $Credential = Get-Credential -UserName $UPN -Message "Geben Sie Ihr Kennwort ein." # Aufbau der Verbindung zu SharePoint Online Connect-SPOService -Url "https://$($SPOOrgName)-admin.sharepoint.com" -Credential $Credential
# Aufbau der Verbindung zu Exchange Online mit dem EXO MFA PowerShell Modul # zum globalen Office 365 Angebot Connect-EXOPSSession -UserPrincipalName admin@varunagroup.de # Beispiel UPN # zum deutschen Office 365 Angebot Connect-EXOPSSession -UserPrincipalName admin@varunagroup.de -ConnectionUri https://outlook.office.de/PowerShell-LiveID -AzureADAuthorizationEndPointUri https://login.microsoftonline.de/common # Beispiel UPN
Hinweis
Mit dem PowerShell Cmdlet Connect-EXOPSSession können Sie sich auch in der Azure Cloud Shell mit Exchange Online verbinden und wie gewohnt verwalten. (Mehr erfahren)
# Import des PowerShell-Moduls Import-Module -Name MicrosoftTeams # Aufbau einer Verbindung zu Microsoft Teams im globalen Office 365 Angebot Connect-MicrosoftTeams
# Import des Graph PowerShell-Moduls Import-Module -Name Microsoft.Graph.Intune # Akzeptieren der administrativen Zugriffsberechtigungen (einmalig notwendig) Connect-MSGraph -AdminConsent # Aufbau einer Verbindung zu Microsoft Graph $UPN = 'admin@varunagroup.de' # Beispiel UPN $password = Read-Host -AsSecureString -Prompt "Enter password for $UPN" $Credential = New-Object System.Management.Automation.PSCredential ($UPN, $password) $Connection = Connect-MSGraph -PSCredential $Credential
Für eine vereinfachte administrative Anmeldung empfehle ich Ihnen das PowerShell-Skript Connect-O365.ps1 von Chris Goosen aus der TechNet Gallery.
Nachfolgend finden Sie eine Empfehlungsliste für Blogs, die ich regelmäßig als Informations- und Lernquelle nutze. Ebenso finden Sie Links zu Webseiten von Office 365-Experten, die interessante Informationen, jenseits von Blogartikeln, bereithalten.
Weitere technische Links finden Sie im Artikel Troubleshooting Links für Exchange, Office 365 und mehr.
Viel Spaß mit Office 365.
You can use PowerShell to manage your local certificate store.
The default PowerShell Get-ChildItem cmdlet allows for accessing the local certificate store. But you should start your PowerShell shell windows as administrator, as access might be restricted by GPO settings.
Get-ChildItem -Path Cert:\LocalMachine Name : TrustedPublisher Name : ClientAuthIssuer Name : Remote Desktop Name : Root Name : TrustedDevices Name : SPC Name : CA Name : REQUEST Name : AuthRoot Name : WebHosting Name : TrustedPeople Name : My Name : SmartCardRoot Name : Trust Name : Disallowed
Get-ChildItem -Path Cert:\LocalMachine\My Directory: Microsoft.PowerShell.Security\Certificate::LocalMachine\My Thumbprint Subject ---------- ------- EC225A0183DC64D864C8BEA1477822858FCEC767 CN=WMSvc-EXSRV02 E2BC29B1445FD267E5A2823591A5221D67D0D94F CN=Microsoft Exchange Server Auth Certificate D8EE794A39A8E04BE32A1E8BED93A3C46D15E0EF CN=EXSRV02 60246A87C12BEB365E7B4044C926587590A3D7B6 CN=mobile.mcmemail.de, O=mcmemail, C=DE 5F103D6C61BF57D86DB4AAA05597B0D1E8155884 CN=EXSRV02.mcmemail.de, CN=EXSRV02, CN=127.0.0.1, CN=localhost, O=Trend Micro.
The example shows a self-signed certificate of a Trend Micro ScanMail for Exchange setup.
$cert = Get-ChildItem -Path Cert:\LocalMachine\My\5F103D6C61BF57D86DB4AAA05597B0D1E8155884 $cert | fl Subject : CN=EXSRV02.mcmemail.de, CN=EXSRV02, CN=127.0.0.1, CN=localhost, O=Trend Micro ScanMail for Microsoft Exchange Issuer : CN=EXSRV02.mcmemail.de, CN=EXSRV02, CN=127.0.0.1, CN=localhost, O=Trend Micro ScanMail for Microsoft Exchange Thumbprint : 5F103D6C61BF57D86DB4AAA05597B0D1E8155884 FriendlyName : NotBefore : 17.11.2014 00:00:00 NotAfter : 16.11.2017 00:00:00 Extensions : {System.Security.Cryptography.Oid, System.Security.Cryptography.Oid}
A certificate issued by an Enterprise CA looks like this
$cert = Get-ChildItem -Path Cert:\LocalMachine\My\60246A87C12BEB365E7B4044C926587590A3D7B6 $cert | fl Subject : CN=mobile.mcmemail.de, O=mcmemail, C=DE Issuer : CN=mcmemail-DC01-CA, DC=mcmemail, DC=de Thumbprint : 60246A87C12BEB365E7B4044C926587590A3D7B6 FriendlyName : mcmemail Exchange Server 2013 Certificate NotBefore : 28.08.2014 15:14:04 NotAfter : 28.08.2015 15:24:04 Extensions : {System.Security.Cryptography.Oid, System.Security.Cryptography.Oid, System.Security.Cryptography.Oid, System.Security.Cryptography.Oid...}
$cert | Export-Certificate -FilePath C:\tmp\cert1.p7b -Type p7b Directory: C:\tmp Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 23.12.2014 11:56 1380 cert1.p7b
$certarray = @() $certarray += $cert $cert = Get-ChildItem -Path Cert:\LocalMachine\My\D8EE794A39A8E04BE32A1E8BED93A3C46D15E0EF $certarray += $cert $certarray Directory: Microsoft.PowerShell.Security\Certificate::LocalMachine\My Thumbprint Subject ---------- ------- 60246A87C12BEB365E7B4044C926587590A3D7B6 CN=mobile.mcmemail.de, O=mcmemail, C=DE D8EE794A39A8E04BE32A1E8BED93A3C46D15E0EF CN=EXSRV02 $certarray | Export-Certificate -FilePath c:\tmp\certs.sst -Type SST Directory: C:\tmp Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 23.12.2014 11:58 3056 certs.sst
Enjoy working with certificates.
You plan to upgrade to Exchange Server 2013? You wonder what the benefits of Office 365 are? Contact us at info@granikos.eu
Uninstalling Exchange Server 2013 will fail, if the PowerShell MachinePolicy or UserPolicy is set by GPO.
You will receive an error message referencing Microsoft KB article 981474, which refers primarily to Exchange Server 2010.
The following PowerShell command removes the GPO setting.
Set-ItemProperty -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell -Name ExecutionPolicy -Value ""
After setting the ExecutionPolicy attribute to an empty string, Exchange Server 2013 can be uninstalled successfully.
Anfang Juli wurde Version 11 der erfolgreichen Anti-Spam und E-Mail Verschlüsselungslösung NoSpamProxy veröffentlicht.
NoSpamProxy eignet sich sowohl für E-Mail Umgebungen, die sich rein On-Premises befinden, als auch für den Betrieb mit Office 365. Gerade hier zeigt sich der absolute Mehrwert durch den Einsatz der zentralen S/MIME Verschlüsselung oder des Portals zum einfachen und sicheren Austausches großer Dateien.
Ein schneller Blick auf die Unterschiede in der NoSpamProxy Verwaltungskonsole zeigt einen prägnaten neuen Menüpunkt.
Mit der neuen DKIM Funktion ist es ein Leichtes, DKIM Signaturen für die eigenen Domänen zu erstellen und diese im Regelwerk von NoSpamProxy anzuwenden. Mit Hilfe von DKIM wird sichergestellt, dass eine mit DKIM signierte Nachricht wirklich von der sendenden Domäne stammt. Ein empfangendes E-Mail System kann so die Echtheit des Absenders überprüfen.
In der Vergangenheit war die Einrichtung und Konfiguration von DKIM nicht trivial. In diesem Fall ist die Schlüsselerzeugung und die Bereitstellung des öffentlichen Schlüssels extrem einfach gehalten und beschränkt sich auf drei Schritte.
Schritt 1: Auswahl der gewünschten eigenen Domäne und Festlegung des DNS Names (Selector)
Nun wird in der Regel für ausgehende E-Mails die DKIM Signierung aktiviert. Mehr ist nicht mehr erforderlich, um eine zusätzliche E-Mail Sicherheitsfunktion zu aktivieren. Gerade beim Betrieb mehrerer E-Mail Gateways wird die Einfachheit der Konfiguration deutlich, da die DKIM Einrichtung nur einmal ausgeführt werden muss.
Ein weiteres neues Feature von NoSpamProxy ist die Möglichkeit, E-Mails mit einem zentral gesteuerten Disclaimer zu versehen. Neben dem Hinzufügen von rein rechtlichen Informationen, dem klassischen Disclaimer, können auch unternehmensweite E-Mail Signaturen mit Benutzerinformationen aus dem Active Directory hinzugefügt werden.
Die Verwaltung und Konfiguration erfolgt über eine eigene Weboberfläche, die für den Administrator bequem über die NoSpamProxy Verwaltungsoberfläche erreichbar ist.
Die Bereitstellung als Webseite ist besonders vorteilhaft für Unternehmen, in denen die Konfiguration und Pflege der E-Mail Signaturen einer Abteilung außerhalb der IT unterliegt. Für die Pflege der Disclaimer-Konfigurationen ist lediglich ein Browser und natürlich die erforderliche Berechtigung zur Verwaltung notwendig.
Die Funktion für zentrale Disclaimer in NoSpamProxy werden wir in einem separaten Blogartikel und einer Schritt-für-Schritt Anleitung beleuchten.
Version 11 von NoSpamProxy zeigt erneut, dass sichere E-Mail Kommunikation mit Software Made in Germany bequem und einfach zu realisieren ist. Es gibt keinen Grund, keine E-Mail Verschlüsselung und sichere E-Mail Übertragung einzusetzen.
Sie möchten die E-Mail Kommunikation Ihres Unternehmens sicherer machen? Sie möchten mehr über E-Mail Verschlüsselung erfahren? Wir helfen Ihnen gerne weiter, rufen Sie uns an 02433 9524780 oder senden Sie uns eine E-Mail an info@granikos.eu.
Wir selber begleiten das Produkt schon seit einigen Jahren und sind gerade vom Einsatz in Kombination mit Office 365 überzeugt.
When you try to connect to SharePoint Online using PowerShell you receive an Access Denied error as follows:
PS C:\> Connect-SPOService -Url https://tenant-admin.sharepoint.com -credential $credential Connect-SPOService : Cannot contact web site 'https://tenant-admin.sharepoint.com/' or the web site does not support SharePoint Online credentials. The response status code is 'Unauthorized'. The response headers are 'X-SharePointHealthScore=0, SPRequestGuid=310ce59d-002b-3000-ef1a-70e5fe7eaf72, request-id=310ce59d-002b-3000-ef1a-70e5fe7eaf72, X-MSDAVEXT_Error=917656; Acces s+denied.+Before+opening+files+in+this+location%2c+you+must+first+browse+to+the +web+site+and+select+the+option+to+login+automatically.,
Connecto to the SPO Service without the previously entered credentials ($credential) and enable the LegacyAuthProtocolsEnabled attribute.
Set-SPOTenant -LegacyAuthProtocolsEnabled $True
Enjoy SharePoint Online.