Als Dienstleister von zugleich 6 verschiedenen Empirum-Kunden habe ich je nach Kunde Variablen auf deren Konfigurationsgruppen gesetzt, die ich problemlos in den klassischen Empirum-Paketen in der setup.inf auswerten kann.
Je nach Kunde wird dann eine andere Konfigurationsdatei kopiert oder eine andere Befehlszeile ausgeführt, oder …, so dass ich mit einem Paket alle Kunden versorgen kann und nicht 6 Pakete erstellen muss.
grobe Beispiele:
If Variable = Kunde 1 Then Copy Konfigurationsdatei 1
If Variable = Kunde 2 Then …
If Variable = Kunde 1 Then Use InstallParameters1
If Variable = Kunde 2 Then …
Wie kann ich diese Variablen bei PSADT übergeben?
Wie kann ich diese Variablen bei PSADT verwenden?
Ich bin noch ganz am Anfang bei der PSADT-Paketierung und besitze bei Powershell ausbaufähige Grundkenntnisse, ich bitte also im Vorhinein um etwas Geduld, wenn ich nicht alles sofort verstehen sollte.
Hallo @DJWG ,
wenn Du so ein Paket erstellst, kannst Du Empirumvariablen an die Setup.cfg übertragen lassen.
Beispiel:
Erstelle eine Computer-Variable wie unten zu sehen
Erstelle die Setup.cfg Option dafür:
Metadata:
da nur Zahlen für die Variable hinterlegt werden wähle als Type „Int“ aus, bei einer Zeichenfolge muss es String lauten.
CompVar=1 bedeutet, für diese CFG Option kann es eine Empirumvariable geben.
VarTmpl: hier wird angegeben wo die Variable in der ComputerName.ini des Clients gefunden wird.
In diesem Beispiel ist es eine Computervariable und es müsste so wie unten aussehen.
Abfrage in der Deploy-Application.ps1 dann so:
if ($global:setupCfg.Options.Kunde -eq 1) {
<hier der Befehl>
}
Setup.cfg:
[Options]
;### Kunde ##########################################################################
; Metadata:
; Type = Int
; CompVar = 1
; VarTmpl = %computername%.Kunde
; Values =
; Default =
;Description:
; <your description>
Kunde=
Danke für die Informationen zur Vorgehensweise, dann bin ich mal gespannt, ob ich das mit vertretbarem Aufwand hinbekomme, oder doch wieder auf den einfachen (schnellen) Vorgang bei den klassischen Paketen zurückgreifen werde.
Ich werde es aber auf jeden Fall mal ausprobieren.
Die Übergabe der Variable aus der Konfigurationsgruppe an das PSADT-Paket hat soweit funktioniert.
Das größere Problem war, die richtige Stelle für den Powershell-Befehl in der Deploy-Application.ps1 zu finden, ich scheine aber den richtigen Platz gefunden zu haben.
Wenn ich nun die Deploy-Application.ps1 mit auskommentierter Main Methode laufen lasse, und
$global:setupCfg.Options.Organisation ausgeben lasse ist der Wert dieser Variable leer.
Wenn ich aber in der Setup.cfg dort einen Wert hinterlege, wird mir dieses ausgegebenen.
Es klappt irgendwie nicht den Wert aus der C:\Empirumagent\Values\MachineValues\DOMAIN\Computername.ini ausulesen. Er steht aber drin. Das habe ich geprüft.
Hallo @SVNW ,
die Setup.cfg sieht soweit gut aus und müsste mit der Empirum Variable übereinstimmen!
Die Datei, welche für das Auslesen der Empirum Variablen, sowie Übergabe an die Setup.cfg zuständig ist, wäre die ApplyEmpirumVars.ps1. Diese wird vor der Ausführung der Deploy-Application.ps1 durch die Setup.inf aufgerufen.
lege eine ApplyEmpirumVars.ps1 in das root Verzeichnis des Paket (dort wo die Setup.cfg auch liegt) und rufe diese wie im unten an Befehl zu sehen auf (ersetze dabei C:\EmpirumAgent\Values\MachineValues\neo\W11E.ini durch den Pfad zur Ini vom Client)
Die Ini Datei des Clients ist normaler Weise wie folgt zu finden:
„C:\EmpirumAgent\Values\MachineValues<domain>%computername%.ini“
Befehl in Powershell:
zuerst in der PowerShell Konsole in das root folder des Paket wechseln
. folgenden Befehl ausführen .\ApplyEmpirumVars.ps1 -ComputernameIniPath "C:\EmpirumAgent\Values\MachineValues\neo\W11E.ini" -SetupCfgSourcePath .\Setup.cfg
Ok, danke. So konnten wir das Paket nun testen. Ich habe aber noch eine Verständnisfrage:
Über Empirum übergeben wir eine Variable STVNW_STLBBauClient=Wert2 auf einen PC. Die Setup.cfg Datei für dieses Paket enthält als Wert STVNW_STLBBauClient=Wert1 (das soll der Standard-Wert sein).
Nach dem Ausführen der ApplyEmpirumVars.ps1 wird der Wert in der aktuellen
$global:setupCfg.Options.STVNW_STLBBauClient auf 2 gesetzt.
Dies ist soweit korrekt, da die Empirum Variable den Wert der Setup.cfg überschreibt.
Wie müssen wir vorgehen, damit beim Test wieder der Standard Wert genommen wird?
Reicht es die Empirum Variable vom Rechner zu löschen und die ApplyEmpirumVars.ps1 erneut auszuführen?
Hallo @SVNW ,
ja, die Variable für den Client leeren reicht aus (der Agent muss natürlich die neu geschriebene Ini-Datei erst noch auf den Client synchen).