Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Herstellen einer Verbindung mit Exchange Online PowerShell
#1
Hallo, 

mit folgenden Befehlen kann man sich direkt mit Office 365 via PowerShell verbinden:

$powerUser = "example.onmicrosoft.com"
$powerPass = "password"

$password = ConvertTo-SecureString $powerPass -AsPlainText -Force
$adminCredential = New-Object -TypeName System.Management.Automation.PSCredential -argumentlist $powerUser,$password
$O365Cred = $adminCredential
Connect-MsolService –Credential $O365Cred
Import-Module MSOnline
$exchangeSession = New-PSSession –ConfigurationName Microsoft.Exchange –ConnectionUri https://ps.outlook.com/powershell -Credential $O365Cred -Authentication "Basic" -AllowRedirection
Import-PSSession $exchangeSession

Das würde ich gerne (aber wi?) in ASG RD unterbringen. Ich müsste im Grunde nur $powerUser + $powerPass umgebungsspezifisch unter Anmeldeeinstellungen hinterlegen und den Rest als externe Applikation. Soweit zur Theorie.

Hat Jemand eine Idee wie man das konkret umsetzen kann?

Danke!
Reply
#2
Ja :-)

Einfach ein ps1-Skript lokal speichern - anstatt der ersten beiden Befehle folgendes verwenden

param(
[string] $powerUser,
[string] $powerPass)

Damit können diese beiden Parameter über die Kommandozeile übergeben werden.

Dann eine External App anlegen - als Filename die PowerShell, also bei mir ist das

%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe

Und als Parameter das lokale Script und die gewünschten Parameter

-Command c:\Outlook365.ps1 -powerUser %Username% -powerPass %Password%

Dann eine Verbindung anlegen, als Protokoll Ext. App. auswählen und in der Kategorie die Ext.App. auswählen - wenn nun noch Anmeldeeinstellungen zugewiesen werden und die Verbindung gestartet wird, sollte es klappen!
Regards/Gruss
Oliver
Reply
#3
Vielen Dank. Leider klappt es noch nicht und ich kriege es nicht hin die PowerShell Ausgabe anzuhalten ...

Inhalt Datei Office_365.ps1:

param(
[string] $powerUser,
[string] $powerPass)

$HOST.UI.RawUI.ReadKey(“NoEcho,IncludeKeyDown”) | OUT-NULL
$HOST.UI.RawUI.Flushinputbuffer()

$password = ConvertTo-SecureString $powerPass -AsPlainText -Force

$adminCredential = New-Object -TypeName System.Management.Automation.PSCredential -argumentlist $powerUser,$password

$O365Cred = $adminCredential

Connect-MsolService –Credential $O365Cred

Import-Module MSOnline

$exchangeSession = New-PSSession –ConfigurationName Microsoft.Exchange –ConnectionUri https://ps.outlook.com/powershell -Credential $O365Cred -Authentication "Basic" -AllowRedirection

Import-PSSession $exchangeSession


Externe Applikationen:
Dateiname -> "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
Arbeitsverzeichnis -> "C:\Windows\System32\WindowsPowerShell\v1.0\"
Argumente -> "C:\Batch\Office_365.ps1" -powerUser %Username% -powerPass %Password%

Unter Verbindungen habe ich einen neuen Eintrag erstellt mit Protokoll "Ext.App." und die o.a. App angegeben sowie unter Anmeldeeinstellungen die korrekten Credentials verknüpft.

Danke!
Reply
#4
Zum Testen ob die Parameter übergeben werden einfach mal folgendes ps1-Skript verwenden

param(
[string] $powerUser,
[string] $powerPass)

Write-Host $powerUser
Write-Host $powerPass

Read-Host

Read-Host erwartet eine User-Eingabe, somit bleibt das Skript an dieser Stelle stehen und man sieht die Ausgabe... Wenn hier alles funktioniert, sollte auch das Skript zum Laden von Office365 funktionieren (wenn es denn ohne Parameter-Übergabe klappt)...
Regards/Gruss
Oliver
Reply
#5
Danke. Ich hatte eine falsche Einstellung bei den Execution Policies ... das Skript wird jetzt ausgeführt aber am Ende wird das Powershell Fenster geschlossen ... wie kann ich denn das verhindern?
Reply
#6
Read-Host
Regards/Gruss
Oliver
Reply
#7
Jetzt erhalte ich den Fehler:

Connect-MsolService : Die Benennung "Connect-MsolService" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie die Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern enthalten), und wiederholen Sie den Vorgang. In C:\Batch\Office_365.ps1:11 Zeichen:1 + Connect-MsolService –Credential $O365Cred

Zeile 11 enthält:

Connect-MsolService –Credential $O365Cred
Reply
#8
Muss der Befehl zum Laden des Moduls nicht vor den Connect-Befehl?

Import-Module MSOnline

Ich kann es leider nicht ausprobieren - ich schaue mal ob jemand eine Office365-Lizenz aktiv hat...
Regards/Gruss
Oliver
Reply
#9
Wir haben es mal versucht, bekommen aber etliche Fehler in dem Skript - vielleicht fehlen CmdLet-Installationen

Warum es nun zu Fehlern kommt weiss ich nicht - das Übergeben von Parametern an ein ps-Skript funktioniert (das haben wir getestet) - warum dann weitere Aufrufe nicht funktionieren, können wir leider nicht sagen...
Regards/Gruss
Oliver
Reply
#10
Hat jemand inzwischen (Rocket Remote Desktop) eine Lösung für die Konfiguration herausgefunden?
Reply
#11
Für welche Konfiguration?
Regards/Gruss
Oliver
Reply
#12
(23-01-2024, 04:04 PM)DevOma Wrote: Für welche Konfiguration?

Naja, das Ziel ist es ja, die Exchange Verwaltung per Powershell aus Rocket heraus aufrufen zu können. Das muss ja über den Weg Ext. Applikationen zu machen sein. die Frage hierbei ist zum einen wie es durchzuführen ist (Welche Verbindung muss angelegt werden, welche Zeugungsakten sind anzulegen) und wie die Konfiguration erfolgt, damit man das möglichst schnell nutzen kann.
Reply
#13
Hm - ich habe keine Ahnung von Exchange-Konfigurationen :-) Mir ist auch leider immer noch nicht klar, was genau passieren soll, wo wir unterstützen können. Aufruf per Ext.App. - was soll aufgerufen werden? Welche Parameter sind erforderlich?!?
Regards/Gruss
Oliver
Reply
#14
(31-01-2024, 01:36 PM)DevOma Wrote: Hm - ich habe keine Ahnung von Exchange-Konfigurationen :-) Mir ist auch leider immer noch nicht klar, was genau passieren soll, wo wir unterstützen können. Aufruf per Ext.App. - was soll aufgerufen werden? Welche Parameter sind erforderlich?!?

vielen Dank für die Geduld.

Also man kann sich über die Windows Powershell bei Microsoft 365 für die Verwaltung des Tenants bzw. des Exchange Servers verbinden, dies erfolgt z.B. per "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoExit -Command "Connect-ExchangeOnline -UserPrincipalName admin@meine-M365-Domain.de"" anschließend wird öffnet sich die Moderne Anmeldung von Microsoft mit der angegeben E-Mail Adresse, dann schaltet man die Verbindung ggf. per MFA frei und man kann anschließend in der Powershell in dem Exchange Online Server des Kunden Anpassungen vornehmen.

Wunsch/Ziel wäre es daher

Die Powershell (so wie z.B. SSH als Externe Applikation) in einem Tab für den jeweiligen Kunden aufrufen zu können mit dem Start Parameter wie angegeben. Perfekt wäre natürlich, wenn hier auch die Anmeldung schon mit gegbeen werden würde (was aber wegen des MFAs vermutlich nicht klappen wird)
Reply
#15
Also powershell.exe als Externe App sollte kein Problem sein - ab Win11 darf aber nicht die neue Terminal-App verwendet werden, die lässt sich momentan nicht einbinden.

Auch die Parameter sollten kein Problem sein - die Ext.App muss dann einfach über eine Verbindung gestartet werden (zur Parameter-Übergabe der Verbinungseinstellungen) - ob die CmdLet's von Office365 dann laufen, das ist nicht mehr Bestandteil unserer App - dazu kann ich momentan nichts sagen - die Parameter-Übergabe ist in der Hilfe "Arbeiten mit externen Applikationen" beschrieben
Regards/Gruss
Oliver
Reply
#16
(05-02-2024, 03:24 PM)DevOma Wrote: - ab Win11 darf aber nicht die neue Terminal-App verwendet werden, die lässt sich momentan nicht einbinden.

Ist ein Windows 11, wie stelle ich sicher dass die reguläre PS genommen wird (muss die Terminal-App einfach deinstalliert sein?)

Kleiner Hinweis zur Hilfe , unter How to... ist leider der Eintrag "Work with external applications" leer"
Reply
#17
"Working with External Applications" Hauptkapitel meinte ich :-) Das unter How to sollte mal entfernt werden...

Powershell unter Win11 - habe ich auch noch nicht hinbekommen - es wird immer über die neue Terminal-App gestartet
Regards/Gruss
Oliver
Reply




Users browsing this thread: 1 Guest(s)