de-DEen-GB
rss

Granikos Technology Blog

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 an administrator, as access might be restricted by GPO settings.

 

List all certificate folder on the local machine

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

 

List all available certificates for the computer

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.

 

Retrieve certificate details

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...}

 

Export a single certificate

$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

 

Export multiple certificates as serialized certificates

$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.

 


Do you plan to upgrade to Exchange Server 2013? Do you wonder what the benefits of Office 365 are? Contact us at info@granikos.eu

Weiterlesen »

The Community Script blog post has been updated, as a new script has been added to the Technet Gallery.

Updated blog post: http://www.granikos.eu/de/Blog/PostId/36/powershell-scripts-for-the-community

Enjoy

Weiterlesen »
On November 27, 2014
3866 Views

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.


Screenshot Exchange Server 2013 Uninstall

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.

 

Links

Weiterlesen »

Im Gegensatz zu vorherigen Versionen von Exchange Server, wo Update Rollups relative kleine Installationspakete darstellten, kommt die Installation von Cumulativen Updates (CU) bei Exchange Server 2013 faktisch einer Neuinstallation gleich. Hierdurch ergibt sich ein ganz anderer Planungsaufwand für die Durchführung eines Upgrades, sowohl in zeitlicher wie auch in ressourcentechnischer Hinsicht. Erstellen Sie sich eine zeitliche Baseline, um die erforderliche Zeit für die CU Installationen in Ihre Wartungspläne zu integrieren.

Wenn Sie auf einem Exchange 2013 Server ein CU installieren möchten, müssen die anderen Exchange Server wissen, dass ein Upgrade durchgeführt wird. Wenn Sie den entsprechenden Server nicht als "in Wartung" kennzeichnen, wird der Primary Activation Manager (PAM) der Database Availability Group (DAG) im Fehlerfall versuchen, auf dem im Upgrade befindlichen Server passiven Datenbank aktiv in Betrieb zu nehmen. Dies wird mit sehr großer Wahrscheinlich zu einem unfreiwilligen Test Ihres Desaster Recovery Plans führen.

Die folgenden Schritte beschreiben die Aktivierung und Deaktivierung der Wartung.

Vorbereitung

Vor dem Aktivieren der Wartung gilt es einige Vorbereitungen zu treffen, um unnötige Fehlersituationen des Exchange 2013 Setups zu vermeiden.

Prüfung Festplattenplatz

Auf dem Laufwerk der Exchange Server 2013 Installation, müssen ca. 10 GB freier Festplattenplatz zur Verfügung stehen. Sollte auf dem Laufwerk weniger Platz zur Verfügung stehen, müssen Sie diesen Platz zuerst sicherstellen.

Prüfung PowerShell Execution Policy

Wird auf dem Exchange Server die MachinePolicy per Gruppenrichtlinie (GPO) gesetzt, wird es beim Ausführen des Exchange Setups zu einem Fehler kommen.

Prüfung der aktuellen Konfiguration erfolgt mit Get-ExecutionPolicy -List.

Ist die MachinePolicy konfiguriert, so kann die Policy für die Installation mit folgendem PowerShell Befehl (Berechtigung vorausgesetzt) auf nicht konfiguriert gesetzt werden.

Get-ExecutionPolicy -List 
Set-ItemProperty -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell -Name ExecutionPolicy -Value ""

Aktivieren der Wartung

Starten Sie die Exchange Management Shell als Adminstrator und prüfen Sie zuerst den aktuellen Status aller Serverkomponenten. Bei dieser Abfrage müssen alle Komponenten auf active stehen. Anschließend werden die Komponenten Hub Transport und UM Call Router auf Draining gesetzt. Dies Ausführung als Administrator ist erforderlich, da in den PowerShell Scripten StartDAGMaintenance und StopDAGMaintenance auch Cluster Befehle ausgeführt werden.

Get-ServerComponentState [SERVERNAME] 
Set-ServerComponentState [SERVERNAME] –Component HubTransport –State Draining –Requester Maintenance 
Set-ServerComponentState [SERVERNAME] –Component UMCallRouter –State Draining –Requester Maintenance

Verschieben Sie eventuell noch vorhandene Nachrichten im Transport Service auf einen anderen Transport Server.

Redirect-Message –Server [SOURCESERVER FQDN] –Target [TARGETSERVER FQDN]

Nach diesen Schritten wird der Server in DAG Maintenance gesetzt. Sollten Ihre DAG nur aus zwei Datenbankkopien bestehen, ergänzen Sie den Aufrud des PowerShel Scripts um den Switch Parameter -overrideMinimumTwoCopies.

cd $ExScripts 
.\StartDAGServerMaintenance.ps1 [SERVERNAME] 
Get-MailboxDatabaseCopyStatus -Server [SERVERNAME]

Setzen Sie nun alle Komponenten in serverweite Wartung.

Set-ServerComponentState [SERVERNAME] –Component ServerWideOffline –State Inactive –Requester Maintenance

Installation

Wenn alle Serverkomponeten auf Wartung gesetzt sind, kann die Installation des Cumulative Updates erfolgen. Schließen Sie die Exchange Management Shell und starten Sie ein neues PowerShell Fenster als Administrator. Wechseln Sie in das Verzeichnis des entpackten Exchange 2013 CU und starten Sie das Setup.

.\setup.exe /Mode:Upgrade /IAcceptExchangeServerLicenseTerms

Nach Ablauf des ersten Teils der Installation werden Sie aufgefordert, den Server neu zu starten. Nach erfolgreichem Neustart und erfolgter Anmeldung, starten Sie ein neues PowerShell Fenster als Administrator, wechseln erneut in das Verzeichnis des entpackten Exchange 2013 CU und starten Sie das Setup.

.\setup.exe /Mode:Upgrade /IAcceptExchangeServerLicenseTerms

Nach erfolgreichem Setup von Exchange ist kein erneuter Start des Servers erforderlich.

Prüfen Sie die Version der Exchange Server.

Get-ExchangeServer | ft Name, Admin*

Deaktivieren der Wartung

Nach erfolgter Installation des Exchange Server 2013 CU muss der Exchange Server aus der Wartung genommen werden, um wieder Verbindungen annehmen zu können.

Set-ServerComponentState [SERVERNAME] -Component ServerWideOffline -State Active -Requester Maintenance 
Get-ServerComponentState [SERVERNAME]

Wenn Sie die beiden Komponenten Hub Transport und UM Call Router in Draining gesetzt haben, werden diese beiden Komponenten separat wieder aktiviert.

Set-ServerComponentState [SERVERNAME] -Component UMCallRouter -State Active -Requester Maintenance 
Set-ServerComponentState [SERVERNAME] -Component HuBTransport -State Active -Requester Maintenance 
Get-ServerComponentState [SERVERNAME]

Anschließend wird die DAG Wartung beendet.

cd $ExScripts 
.\StopDAGServerMaintenance.ps1 [SERVERNAME] 
Get-MailboxDatabaseCopyStatus -Server [SERVERNAME]

Und nun heisst es warten auf das nächste CU für Exchange Server 2013.

 


Gerne unterstützen wir Sie bei der Planung und Umsetzung Ihrer Exchange Server 2013 Anforderungen und der Anbindung an Office 365.
Kontaktieren Sie uns: info@granikos.eu  
Erfahren Sie mehr über unsere Beratungsdienstleistungen unter http://www.Granikos.eu.

Weiterlesen »
Last updated: 2020-10-25


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.

Exchange Server 2013Exchange Server 2016Exchange Server 2019General

 

Office 365Office 365

 

Exchange Server 2013Exchange Server 2016Exchange Server 2019Exchange Server 2013 / 2016 / 2019

 

Exchange Server 2007Exchange Server 2010Exchange Server 2007/2010

 

PowerShellOther Stuff

 

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


Updates

Update 2020-10-05: Fetch all remote SMTP servers from Exchange receive connector logs added
Update 2020-05-25: TechNet Gallery links removed due to end of TechNet Gallery in mid-2020
Update 2020-02-07: Report for enabled client protocols, Exchange Environment Report - v2, Set thumbnailPhoto for AzureAD guest users added
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

 

Weiterlesen »