Rückmeldung aus Powershell weiter nutzen

Antworten
tobias.woerner
Beiträge: 5
Registriert: 21 Jan 2019, 14:51

Rückmeldung aus Powershell weiter nutzen

Beitrag von tobias.woerner »

Hallo zusammen!

Als eins der ersten Dinge in OPSI habe ich mal das Uninstall-Script von Adobe Acrobat DC ein wenig angepasst.
Falls der Ordner Adobe unter Programme (x86) noch vorhanden ist und dieser leer ist soll dieser gelöscht werden.

Das funktioniert soweit ganz gut - (wir haben eh nur noch Win10 Kisten mit x64... daher ist die direkte Wahl von Programme (x86) okay)

Es ist doch jetzt bestimmt möglich aus dem Powershell eine Rückmeldung zu generieren, die dann unter [Actions] eine Message erzeugt "Ordner erfolgreich gelöscht" oder "Ordner nicht gelöscht, da Dateien vorhanden")?

Dass das momentan nicht wirklich Sinn macht ist mir durchaus bewusst...
Allerdings wüsste ich gerne wie das funktioniert, damit ich bei anderen Scripts, die ich noch erstellen muss umsetzen kann.

Danke schon mal für die Hilfe!

Code: Alles auswählen

[Initial]
LogLevel=9
ExitOnError=false
ScriptErrorMessages=on
TraceMode=off
StayOnTop=false

[Actions]
LogLevel=9
DefVar $MSIid$
DefVar $MeinVerzeichnis$
DefVar $VerzeichnisLeer$
DefVar $exitcode$
 
Set $MSIid$		      = "{AC76BA86-7AD7-1031-7B44-AC0F074E4100}"
Set $MeinVerzeichnis$ = "C:\Program Files (x86)\Adobe\"

 Message "Deinstalliere Adobe Reader DC"
WinBatch_uninstall

Message "Lösche Ordner"
DosInAnIcon_setpolicy
ExecWith_powershell  powershell.exe
set $exitcode$ = getLastExitcode
if not ($exitcode$ = "0")
        comment "powershell script failed"
endif

[WinBatch_uninstall]
MsiExec.exe /passive /x $MSIid$

[DosInAnIcon_setpolicy]
echo "powershell set-executionpolicy RemoteSigned ..."
powershell.exe set-executionpolicy RemoteSigned
exit %ERRORLEVEL%

[ExecWith_powershell]
echo "powershell opsi-script-test"

if((get-childitem 'C:\Program Files (x86)\Adobe').count -eq 0)
 {
 rm "C:\Program Files (x86)\Adobe" -r -fo
 }
 else
 {
 echo "nicht null"
 }

Ach ja: Ist es eigentlich auch möglich die Variablen wie z.B. $MeinVerzeichnis$ an PowerShell zu übergeben?
lr-techchannel
Beiträge: 5
Registriert: 18 Jan 2019, 20:00

Re: Rückmeldung aus Powershell weiter nutzen

Beitrag von lr-techchannel »

Hallo Tobias,

es gibt die "execwith" funktion in den wininst Scripten. Allerdings hab ich die noch nie benutzt.
Grundsätzlich aber ein interessanter Gedanke.

Du solltest aber bestmöglichst darauf achten welches WMF (Windows Management Framework) und somit welche Powershell Version auf den Clients installiert ist.
Oh und wenn du Scripte ausführen willst, vergiss "set-executionpolicy" nicht :D
uncle_scrooge
Beiträge: 650
Registriert: 21 Feb 2012, 12:03
Wohnort: Mainz

Re: Rückmeldung aus Powershell weiter nutzen

Beitrag von uncle_scrooge »

Daß man Variablen/Strings/whatever aus einem per ExecWith gestartetem Script wieder an den WINST übergeben kann, wäre mir neu. Ich lasse mich aber gerne aus berufenerem Munde belehren.
Was Du aber auswerten kannst, ist der entsprechende Exit Code des Scriptes. Und den kannst Du normalerweise nach belieben setzen.

Und ja, ExecWith-Aufrufe akzeptieren auch Parameter. Einfach noch mal im Handbuch nachschlagen.
Benutzeravatar
tobias
Beiträge: 1291
Registriert: 20 Aug 2008, 12:36
Wohnort: Braunschweig
Kontaktdaten:

Re: Rückmeldung aus Powershell weiter nutzen

Beitrag von tobias »

Moin,

nen Rückgabewert nicht direkt, aber du kannst den gesamten Output "auffangen" und natürlich weiter Verarbeiten.
Wenn dein Script nicht viel Output hat, eine brauchbare Möglichkeit.
=> http://download.uib.de/opsi_stable/doc/ ... h-catchout

Hab ich vor langer Zeit mal hier gemacht => wiki/doku.php?id=userspace:find_killtask

Allerdings war das nicht Powershell aber das ja egal. Ich habe mir da den Output des "scripts" so zurecht gelegt das ich ihn in WINST gut weiter verarbeiten konnte.
tobias.woerner
Beiträge: 5
Registriert: 21 Jan 2019, 14:51

Re: Rückmeldung aus Powershell weiter nutzen

Beitrag von tobias.woerner »

Vielen Dank!

Hat mir deutlich weitergeholfen!
daniel.bergers
Beiträge: 1
Registriert: 11 Aug 2022, 11:53

Re: Rückmeldung aus Powershell weiter nutzen

Beitrag von daniel.bergers »

Hallo Zusammen,

also die OPSI Variable lasse ich in der ExecWith_Powershell Funktion immer laufen, in dem ich diese "umwandle".

$Var = $Var$

So werden die Variablen aus dem Opsiskript immer übernommen.

Wie ich allerdings von der Powershell Funktion eine Vartiable im Opsiskript (Winst-Kontext) ändern kann, weiß ich auch noch nicht.
Jan.Schmidt
Beiträge: 439
Registriert: 08 Jul 2017, 12:02

Re: Rückmeldung aus Powershell weiter nutzen

Beitrag von Jan.Schmidt »

Hallo Daniel,

das ist aber sehr schön.

Ich hab da eine Idee...
Wie wärs einmal die Cat 7 Peitsche für Leichenschändung von Threads?
Antworten