mayho33
Goto Top

Ps1 und Commandline-Argumente like vbscript oder CMD

Hallo @ All

Eventuell ist mein Ansatz komplett falsch, aber ich versuche folgendes Problem zu lösen und hoffe wieder mal auf Eure Hilfe:

Wir haben eine Install-Wrapper als cmdlet. Der enthält alle Funktionen usw. die wir zur Umsetzung der Installationen via SCCM 2012 R2 benötigen und ist lokal auf jedem Client installiert (installierte Applikationen auslesen, Deinstallieren, Installieren, usw.)

Angestoßen wird das ganze nun über eine "INSTALL.PS1" in der der Wrapper gesteuert wird.


vereinfachtes, symbolisches Beispiel der Install.ps1:
$env:_BootMode = "reboot"
$env:_NotificationMode = "silent"
$env:_InstallMode = "uninstall"
$env:_Kontext = "machine"

Start-Wrapper -Uninstall "Adobe Reader*"
Start-Wrapper -Uninstall "Irgend eine andere App"
Start-Wrapper -Install "$cdir\Paketname\ProgrammA.msi"
Start-Wrapper -Install "$cdir\Paketname\ProgrammB.exe" -Arguments "/VERYSILENT"
Start-Wrapper -RemoveShortCut ....
usw.

nun kommt es vor, dass z.B. bei einem Paket im Script (INSTALL.PS1) ein angegebener Reboot deaktiviert werden soll. Dazu möchte ich einfach im Program des SCCM-Pakets einen Parameter mitgeben können um nicht extra das Script ändern und somit ein Update der Distribution-Points antriggern zu müssen.

Bsp:
1cf56880bf094a77905dc3aef3478ebd


Irgendwie stehe ich da aber vor einem unlösbaren Problem. Wenn ich der Install.ps1 testweise ein paar Argumente mitgebe, habe ich diese zwar in $args gespeichert und kann sie ausgeben, aber ich kann sie nicht weiterverarbeiten oder an den Wrapper übergeben.

Hat eventuell jemand einen Ansatz oder Lösungsvorschlag? Die Install.PS1 beinhaltet absichtlich keine Functions usw. sondern nur die Schritte die abgearbeitet werden soll. jede Logik ist in den Wrapper (CMDLET) ausgelagert.

Danke für eure Hilfe!

mayho

Content-Key: 242081

Url: https://administrator.de/contentid/242081

Printed on: April 26, 2024 at 04:04 o'clock

Member: colinardo
colinardo Jun 27, 2014 updated at 15:35:19 (UTC)
Goto Top
Hallo mayho,
also wenn du im INSTALL.ps1 auf die Parameter bzw. Werte zugreifen kannst sollten sie auf jeden Fall auch an ein CMDlet weitergereicht werden können. Anstatt $args kannst du in der INSTALL.ps1 ganz am Anfang:
param($par1,$par2)
usw. deine gewünschten Parameter definieren, in dann in der INSTALL.ps1 an deinen Wrapper via Parameter übergeben .

Wie man Parameter korrekt an eine PS1 Datei übergibt kannst du hier nachlesen:
http://stackoverflow.com/questions/6359618/pass-parameter-from-batch-fi ...

Grüße Uwe
Member: Pjordorf
Pjordorf Jun 27, 2014 at 15:14:13 (UTC)
Goto Top
Hallo Uwe,

Zitat von @colinardo:
Mir hat mein Sophos gerade gesagt das sich in dein Link ein Troj/JSRedir-OL versteckt. Oder spinnt mein Sophos? face-smile

Gruß,
Peter
Member: mayho33
mayho33 Jun 27, 2014 at 15:19:13 (UTC)
Goto Top
Hallo Uwe (alias Lebensretter?)!

Also wenn du nicht wärst...Hast mir ja schon öfter aus der patsche geholfen. Werde ich mir Zuhause zu Gemüte führen. Vorausgesetzt mein AV sagt mir nicht das gleiche:
a023dfde4024581c52fed66c8a9501da

lg Christian
Member: colinardo
colinardo Jun 27, 2014 updated at 15:27:35 (UTC)
Goto Top
Komisch die Seite hatte ich bisher immer ohne Probleme benutzt, die Virenscanner sind sich da zumindest nicht alle Einig:
https://www.virustotal.com/de/url/dfd0e9269fa2369236962117e42bb912c45843 ...
Die Mehrheit hält es für unbedenklich, ich checke das mal. Danke für die Info !
Member: mayho33
mayho33 Jun 27, 2014 at 15:29:43 (UTC)
Goto Top
Tja, Mein Malwarebites am NB sagt mir ebenfalls: ...Bedrohung...wurde blokiert... usw.
Kannst du die betreffenden Stelle einfach mal Copy-Pasten?

mayho
Member: colinardo
Solution colinardo Jun 27, 2014 updated at 16:16:48 (UTC)
Goto Top
Tja, Mein Malwarebites am NB sagt mir ebenfalls: ...Bedrohung...wurde blokiert... usw.
habe die Seite schon länger nicht mehr aufgerufen, und nur in meiner Bookmarkliste gehabt, die fliegt jetzt da raus
Kannst du die betreffenden Stelle einfach mal Copy-Pasten?
back-to-topMethoden zum Starten von PS-Scripten aus Batch und Kommendozeilen heraus:
Hier gibt es unterschiedliche Methoden, je nach Anforderungen gibt es einige Besonderheiten vor allem bei Leerzeichen in Pfaden zu beachten.
Der einfachste Aufruf sieht hier so aus:
powershell.exe -File "C:\Pfad\Script.ps1"
Wenn man dem Script Parameter übergeben möchte:
powershell.exe -File "C:\Pfad\Script.ps1" "Parameter 1" "Parameter 2"
Wenn man "benannte" Parameter übergeben möchte (die einfachen Hochkommas um den Scriptpfad werden benötigt wenn er Leerzeichen beinhaltet):
powershell.exe -command "&'C:\Pfad\Script.ps1' -par1 'Wert1' -par2 'Wert2'"
Man kann auch mehrere Scripte hintereinander ausführen lassen:
powershell.exe -command "&'C:\Pfad\Script1.ps1';&'C:\Pfad\Script2.ps1'"
Member: mayho33
mayho33 Jun 27, 2014 updated at 15:54:55 (UTC)
Goto Top
Danke!

Da war also der "Hund" vergraben. Am Anfang des Script einfach nur die Variable $args angeben. Schon klappts auch mit dem Wrapper. Simpler geht's wohl kaum mehr. An sowas hätte ich im leben nicht gedacht. Suuuper!

grüße, mayho