mayho33
Goto Top

Powershell Commandline-Arguments vom Parent-Script auslesen

Hallo @ All,

Ich bin wieder mal auf der Suche nach einer Lösung und hoffe auf eure Unterstützung.

Mein Problem:
Ich möchte die Start-Parameter mit denen ich ein ps1-Script aufrufe in einem, vom ps1-Script importieren Modul auslesen und ausgeben,

Wie gehe ich vor:
Im einer Comspec (also cmd.exe) rufe ich eine ps1-Script, nennen wir es TEST.ps1, mit ein paar Parametern auf:
powershell.exe -file "<pfad>\TEST.ps1" -ParamA -ParamB 'meine Mama' -ParamC 'mein Papa'  

Diese TEST.ps1 importiert ein psm1-Modul das ein paar Funktionen enthält.
Import-Module "$(Split-Path $MyInvocation.MyCommand.Path -Parent)\meinModul.psm1"  

Nun möchte ich "im Modul" herausfinden mit welcher Commandline die TEST.ps1 aus der Comspec heraus aufgerufen wurde.

Ich dachte dabei sofort am $MyInvocation, aber anscheinend vergisst PS was 2 Ebenen weiter oben passiert.

Danke für eure Hilfe!

Mayho

Content-ID: 808068145

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

Ausgedruckt am: 23.11.2024 um 22:11 Uhr

colinardo
Lösung colinardo 25.06.2021 aktualisiert um 18:35:59 Uhr
Goto Top
Servus Mayho,
Z.B. in deinem Module ginge das so
(gcim win32_process -Filter "ProcessId = $pid" -Property Commandline).Commandline  
Für das Module ist es so wie wenn es sich im ps1 Script befände, die PID ist dort die gleiche und damit kommst du dann über den Process an die Commandline.

Grüße Uwe
mayho33
mayho33 25.06.2021 um 20:01:01 Uhr
Goto Top
Zitat von @colinardo:

Servus Mayho,
Z.B. in deinem Module ginge das so
> (gcim win32_process -Filter "ProcessId = $pid" -Property Commandline).Commandline  
> 
Für das Module ist es so wie wenn es sich im ps1 Script befände, die PID ist dort die gleiche und damit kommst du dann über den Process an die Commandline.

Grüße Uwe


Super! Danke! Funktioniert perfekt! Auch wenn ich nicht ganz verstehe warum das geht, wenn man die ps1 in der comspec aufruft, callt man es aber direkt in der ISE bekomme ich nur das:

C:\Windows\system32\WindowsPowerShell\v1.0\PowerShell_ISE.exe

Kannss du es mir erklären? Wie müsste ich anpassen, damit beides geht (<= schwere Luxusprobleme)? face-smile

Danke Chris
mayho33
mayho33 25.06.2021 aktualisiert um 21:26:10 Uhr
Goto Top
Zitat von @mayho33:

Zitat von @colinardo:

Servus Mayho,
Z.B. in deinem Module ginge das so
>> (gcim win32_process -Filter "ProcessId = $pid" -Property Commandline).Commandline  
>> 
Für das Module ist es so wie wenn es sich im ps1 Script befände, die PID ist dort die gleiche und damit kommst du dann über den Process an die Commandline.

Grüße Uwe


Super! Danke! Funktioniert perfekt! Auch wenn ich nicht ganz verstehe warum das geht, wenn man die ps1 in der comspec aufruft, callt man es aber direkt in der ISE bekomme ich nur das:

> C:\Windows\system32\WindowsPowerShell\v1.0\PowerShell_ISE.exe
> 

Kannss du es mir erklären? Wie müsste ich anpassen, damit beides geht (<= schwere Luxusprobleme)? face-smile

Danke Chris

Edit:

Ahhh! Geht eh! Ich Doofi muss ja auch ein paar Parameter anhängen! face-smile Oh Gott, ich brauch Urlaub!