Zertifikate in die Exchange Online GAL hochladen
Hallo,
vieleicht kann mir einer helfen. Ich habe die glorreiche Aufgabe, Zertifikate (*.cert, *.pem) in die GAL von Exchange Online hoch zuladen. Es sind aber an die 700 Zertifikate. Jetzt ist meine Überlegung das ganze mit einem Skript zu realisieren. Alle Zertifkate einzeln hoch zu laden ist nen haufen Aufwand.
Nun zu meiner Frage, gibt es ein Skript oder kann man da was bauen, das man mehrere Zertifikate hochladen kann.
Befehl:
Ich kenne mich mit Skripten nicht so aus, hoffe etwaige Hilfe vieleicht durch euch.
Danke im Vorraus..
Grüße
vieleicht kann mir einer helfen. Ich habe die glorreiche Aufgabe, Zertifikate (*.cert, *.pem) in die GAL von Exchange Online hoch zuladen. Es sind aber an die 700 Zertifikate. Jetzt ist meine Überlegung das ganze mit einem Skript zu realisieren. Alle Zertifkate einzeln hoch zu laden ist nen haufen Aufwand.
Nun zu meiner Frage, gibt es ein Skript oder kann man da was bauen, das man mehrere Zertifikate hochladen kann.
Befehl:
$cert=New-Object System.Security.Cryptography.X509Certificates.X509Certificate2("C:\temp\cert.cer")
$certArray = New-Object System.Collections.ArrayList
$certArray.Insert(0,$cert.GetRawCertData())
Set-Mailbox -Identity <Mailbox UPN> -UserCertificate $certArray
Ich kenne mich mit Skripten nicht so aus, hoffe etwaige Hilfe vieleicht durch euch.
Danke im Vorraus..
Grüße
Please also mark the comments that contributed to the solution of the article
Content-ID: 669578
Url: https://administrator.de/contentid/669578
Printed on: December 5, 2024 at 16:12 o'clock
13 Comments
Latest comment
Wenn im Common Name (CN) der Certs die Haupt-Mailadresse der User-Mailboxen steht dann bspw. so
Ansonsten z.B. Liste der User mit ihren zugehörigen Certs in ne CSV packen und mit Import-CSV und Foreach-Object durchlaufen. Kommt halt drauf an wie du Benennung etc. bei dir regeln willst oder geregelt hast.
Gruß catrell
foreach($file in Get-ChildItem "D:\certs" -File -Filter *.pem){
$cert = [System.Security.Cryptography.X509Certificates.x509certificate2]::new($file.Fullname)
$cn = $cert.Subject -replace '.*CN=([^,]+).*','$1'
Set-Mailbox -Identity $cn -UserCertificate (,$cert.GetRawCertData())
}
Ansonsten z.B. Liste der User mit ihren zugehörigen Certs in ne CSV packen und mit Import-CSV und Foreach-Object durchlaufen. Kommt halt drauf an wie du Benennung etc. bei dir regeln willst oder geregelt hast.
Gruß catrell
Zeile 1, durchlaufe alle Zertifikate (*.pem) im angegebenen Verzeichnis.
Zeile 2, erstelle ein Certificate Object aus der jeweiligen Datei
Zeile 3, extrahiere den reinen CN aus dem Subject des Zertifikates
Zeile 4, nutze den CN als Usernamen der Mailbox und die Bytes des Zertifikates um es mit Set-Mailbox dem User zuzuordnen.
Wenn im CN schon der UPN steht ist die Excelliste als Zuordnung überflüssig, da wir diesen direkt aus dem Certificate extrahieren können.
Zeile 2, erstelle ein Certificate Object aus der jeweiligen Datei
Zeile 3, extrahiere den reinen CN aus dem Subject des Zertifikates
Zeile 4, nutze den CN als Usernamen der Mailbox und die Bytes des Zertifikates um es mit Set-Mailbox dem User zuzuordnen.
Wenn im CN schon der UPN steht ist die Excelliste als Zuordnung überflüssig, da wir diesen direkt aus dem Certificate extrahieren können.
Echt jetzt ihr nutzt Umlaute im UPN?? Bähhh würde ich als erstes ändern ....
Kann man das mit "encoding" umgehen?
Nein ae,oe,ue sind keine Encodings sondern nur eine alternative Schreibweise im Deutschen. Aber naja hier ein Workaround wenn du nicht mit Listen arbeiten willst.foreach($file in Get-ChildItem "D:\certs" -File -Filter *.pem){
$cert = [System.Security.Cryptography.X509Certificates.x509certificate2]::new($file.Fullname)
$cn = $cert.Subject -replace '.*CN=([^,]+).*','$1' -replace 'oe','ö' -replace 'ae','ä' -replace 'ue','ü'
Set-Mailbox -Identity $cn -UserCertificate (,$cert.GetRawCertData())
}
Zitat von @Judgelg:
Fehler von mir UPN ist natürlich nicht mit umlauten, aber der Anzeigenname. Da scheint es zu chrashen.
Der wird doch gar nicht im Skript genutzt! Als Identity akzeptiert Set-Mailbox mehrere Werte, und wenn der UPN bei euch gleich dem im Cert ist muss es damit laufen. Fehler kann ich hier auch nicht nachvollziehen.Fehler von mir UPN ist natürlich nicht mit umlauten, aber der Anzeigenname. Da scheint es zu chrashen.
Identity
Der Identity-Parameter gibt die Identität an, das Sie ändern möchten. Sie können jeden beliebigen Wert verwenden, sofern er das Postfach eindeutig kennzeichnet. Beispiel:
Name
Alias
Distinguished Name (DN)
Distinguished Name (DN)
Domäne\benutzername
E-Mail-Adresse
GUID
LegacyExchangeDN
SamAccountName
Benutzer-ID oder User Principal Name (UPN)
Im Skript kommt kein Anzeigename zum Zug! Ergo kann es nicht daran liegen, da wird was anderes bei euch nicht ganz koscher sein.