Exchange 2016 - Liste von Domains per PS-Script an Set-SendConnector übergeben
Hallo in die Runde,
ich habe ein PS-Script gebaut, das mir eine ganze Reihe von Domains, die bereits im korrekten Format in einer Datei liegen, als Parameter -AddressSpaces an Set-SendConnector übergeben soll.
Das gewünschte Format ist: -AddressSpaces "domain1.de","domain2.de","...","..."
In meiner Datei sind die Domains bereits entsprechend aufgelistet.
Alles als Einzeiler, in Anführungszeichen gepackt und durch Komma getrennt.
Um den Inhalt als Parameter zu übergeben lese ich den Inhalt der Datei in ein Array ein:
Anschließend übergebe ich den Inhalt des Array als Parameter:
Allerdings interpretiert Set-SendConnector den Inhalt von $addressSpaces scheinbar als eine zusammenhängende Domain.
Kann mir jemand sagen, wie ich den Inhalt des Array so übergeben bekomme, dass nicht der gesamte Inhalt des Array als ein einzelner Wert übergeben wird?
Danke und beste Grüße,
Chris
ich habe ein PS-Script gebaut, das mir eine ganze Reihe von Domains, die bereits im korrekten Format in einer Datei liegen, als Parameter -AddressSpaces an Set-SendConnector übergeben soll.
Das gewünschte Format ist: -AddressSpaces "domain1.de","domain2.de","...","..."
In meiner Datei sind die Domains bereits entsprechend aufgelistet.
Alles als Einzeiler, in Anführungszeichen gepackt und durch Komma getrennt.
Um den Inhalt als Parameter zu übergeben lese ich den Inhalt der Datei in ein Array ein:
$addressSpaces = Get-Content -Path "$meineDatei"
Anschließend übergebe ich den Inhalt des Array als Parameter:
Set-SendConnector -Identity $ConnectorName -AddressSpaces $addressSpaces
Allerdings interpretiert Set-SendConnector den Inhalt von $addressSpaces scheinbar als eine zusammenhängende Domain.
Die Argumenttransformation für den Parameter "AddressSpaces" kann nicht verarbeitet werden. Der Wert ""domain1.de","domain2.de","domain3.de"" ist keine gültige SMTP-Domäne.
Kann mir jemand sagen, wie ich den Inhalt des Array so übergeben bekomme, dass nicht der gesamte Inhalt des Array als ein einzelner Wert übergeben wird?
Danke und beste Grüße,
Chris
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 73819151096
Url: https://administrator.de/contentid/73819151096
Ausgedruckt am: 22.11.2024 um 07:11 Uhr
6 Kommentare
Neuester Kommentar
Hi.
Textdatei-Aufbau
Code
nur der Vollständigkeit halber. Man kann das ganze zwar auch alles mit einer einzigen Zeile in der Textdatei machen so wie du es jetzt hast, aber das ist ja ehrlich gesagt umständlicher als sie einfach untereinander zu schreiben.
Dein Textdatei-Aufbau
Code sähe dann so aus
Gruß
In meiner Datei sind die Domains bereits entsprechend aufgelistet.
Alles als Einzeiler, in Anführungszeichen gepackt und durch Komma getrennt.
Das ist leider falsch, das Ergebnis muss ein [string[]] Array mit einer Domain pro Arrayeintrag sein die Domains also nur untereinander in die Textdatei eintragen dann klappts auch sofort . Get-Content liest Dateien per Default in ein [string[]] Array ein und zwar wird für jede Zeile ein Array Eintrag erstellt, deswegen klappt's bei dir nicht, weil du alles in die erste Zeile packst.Alles als Einzeiler, in Anführungszeichen gepackt und durch Komma getrennt.
Textdatei-Aufbau
domain1.de
domain2.de
domain3.de
Code
$ConnectorName = "MyConnector"
$meineDatei = "D:\domains.txt"
Set-SendConnector -Identity $ConnectorName -AddressSpaces (Get-Content -LiteralPath $meineDatei)
nur der Vollständigkeit halber. Man kann das ganze zwar auch alles mit einer einzigen Zeile in der Textdatei machen so wie du es jetzt hast, aber das ist ja ehrlich gesagt umständlicher als sie einfach untereinander zu schreiben.
Dein Textdatei-Aufbau
"domain1.de","domain2.de","domain3.de"
Set-SendConnector -Identity $ConnectorName -AddressSpaces (Get-Content -LiteralPath $meineDatei -Head 1).replace('"','').split(",")
Gruß
Zitat von @c-webber:
Was mir nur auffällt, bzw. ich nicht verstehe (bin nicht sonderlich tief im ps-scripting drin) ist, wie kommen in deinem ersten Beispiel am Ende die Kommas zwischen die einzelnen Domains?
Der Parameter soll ja folgendermaßen übergeben werden:
-AddressSpaces "domain1.de","domain2.de","..."
Im Powershell, bezeichnet das "","","",... ein ArrayWas mir nur auffällt, bzw. ich nicht verstehe (bin nicht sonderlich tief im ps-scripting drin) ist, wie kommen in deinem ersten Beispiel am Ende die Kommas zwischen die einzelnen Domains?
Der Parameter soll ja folgendermaßen übergeben werden:
-AddressSpaces "domain1.de","domain2.de","..."
$array = "Hallo1","Hallo2"
$array.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array
Würde dein Beispiel nicht den folgenden output erzeugen (ohne Kommas)?
-AddressSpaces "domain1.de" "domain2.de" "..."
Nein. Powershell arbeitet objektorientiert und hier wird vom Parameter ein Array aus Strings erwartet kein einzelner zusammenhängender String-AddressSpaces "domain1.de" "domain2.de" "..."
Der Parameter -AddressSpace hat ja den Typ <MultiValuedProperty> erwartet also bei mehreren Werten ein Array und keinen single string in dem die Domains aneinander gepappt sind
[-AddressSpaces <MultiValuedProperty>]
Hier liest du dich schlau
Alles, was Sie schon immer über Arrays wissen wollten
Des weiteren gibt es bei MultiValuedProperties die Möglichkeit einzelne Elemente mittels Hashtable-Objekt hinzuzufügen oder zu löschen:
Hier nachzulesen
Ändern von mehrwertigen Eigenschaften
# zusätzliche Domain zum Connector hinzufügen
Set-SendConnector $ConnectorName -AddressSpaces @{add="otherdomain.de"}
# Domain aus dem Connector löschen
Set-SendConnector $ConnectorName -AddressSpaces @{remove="otherdomain.de"}
# oder beides gleichzeitig (hinzufügen und löschen) geht auch
Set-SendConnector $ConnectorName -AddressSpaces @{add="domain.tld";remove="otherdomain.de"}
Ändern von mehrwertigen Eigenschaften