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:
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
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:
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 242081
Url: https://administrator.de/forum/ps1-und-commandline-argumente-like-vbscript-oder-cmd-242081.html
Ausgedruckt am: 05.02.2025 um 09:02 Uhr
7 Kommentare
Neuester Kommentar
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:
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
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)
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
Hallo Uwe,
Gruß,
Peter
Zitat von @colinardo:
Mir hat mein Sophos gerade gesagt das sich in dein Link ein Troj/JSRedir-OL versteckt. Oder spinnt mein Sophos?
Mir hat mein Sophos gerade gesagt das sich in dein Link ein Troj/JSRedir-OL versteckt. Oder spinnt mein Sophos?
Gruß,
Peter
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 !
https://www.virustotal.com/de/url/dfd0e9269fa2369236962117e42bb912c45843 ...
Die Mehrheit hält es für unbedenklich, ich checke das mal. Danke für die Info !
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 rausKannst du die betreffenden Stelle einfach mal Copy-Pasten?
Methoden 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"
powershell.exe -File "C:\Pfad\Script.ps1" "Parameter 1" "Parameter 2"
powershell.exe -command "&'C:\Pfad\Script.ps1' -par1 'Wert1' -par2 'Wert2'"
powershell.exe -command "&'C:\Pfad\Script1.ps1';&'C:\Pfad\Script2.ps1'"