Seite 1 von 1

Diskussion: Function powershellcall()

Verfasst: 05 Apr 2018, 11:04
von d.oertel
Hallo allerseits,

wie auf der opsi Konferenz besprochen wird es im opsiscript eine neue Funktion 'powershellcall geben.
Analog zur Funktion shellCall() wird es diese mit Rükgabewert String (exitcode), mit Rükgabewert Stringliste (output) und ohne Rückgabewert geben.

Dabei ist dann z.B.

Code: Alles auswählen

set $str$ = powershellcall("get-partition | select disknumber, partitionnumber, driveletter, size,type")
eine Abkürzung von

Code: Alles auswählen

Execwith_ps powershell
set $str$ = getLastExitcode
[Execwith_ps]
trap { write-output $_ ; exit 1 }
get-partition | select disknumber, partitionnumber, driveletter, size,type
exit $LASTEXITCODE
So und jetzt habe ich zwei Fragen an die PraktikerInnen:

1. Da die powershell ja per Default restricted ist, muss diese vor Aufrufzu nächst mit sowas wie nachfolgend erst freigeschaltet werden:

Code: Alles auswählen

shellCall('powershell.exe set-executionpolicy RemoteSigned')
und danach auch wieder zurückgesetzt werden.

Meine Fragen:
a) Soll es über einen zusätlichen Schalter (boolean parameter) möglich sein, das automatisch die aktuelle executionpolicy gesichert wird, die executionpolicy auf RemoteSigned gesetztwird. Dann der eigentliche Befehl ausgeführt wird und abschließend die executionpolicy wie der restored wird.
b) wenn ja - soll das der Default sein ?

2. Analog zum shellcall Aufruf wird der powershellCall per Default sysnative sein (auf einem 64bit System wird die 64bit powershell aufgerufen). Über einen zusätzlichen Parameter könnte auch das gesteuert werden.
Frage:
Ist das gewünscht oder führt das eher zur Verwirrung ?

Ich freue mich auf die Rückmeldungen.

gruß
detlef oertel

Re: Diskussion: Function powershellcall()

Verfasst: 09 Apr 2018, 08:11
von uncle_scrooge
1.
a. Ja.
b. Ja.
M.E. die einzig saubere Implementierung. Respect the hard configuration work of others.

2. Gewünscht.
Mir fällt zwar spontan kein konkretes Anwendungsszenario ein. Aber man weiß ja nie......

Re: Diskussion: Function powershellcall()

Verfasst: 02 Mai 2018, 16:40
von larsg
Ist zwar etwas spät, aber nur für den Fall das dies noch nicht bekannt ist.

Man kann die ExecutionPolicy auch für jeden Aufruf als Parameter spezifisch angeben:

Code: Alles auswählen

Execwith_ps powershell -ExecutionPolicy RemoteSigned
set $str$ = getLastExitcode
[Execwith_ps]
trap { write-output $_ ; exit 1 }
get-partition | select disknumber, partitionnumber, driveletter, size,type
exit $LASTEXITCODE
Damit spart man sich das seperate Setzen/Zurücksetzen vor und nach jedem Aufruf, der System-Parameter bleibt hiervon unberührt.