Powershell: Pfad des Scripts finden das ein anderes aufgerufen hast
Hallo @ All!
Ich frage mich momentan wie ich es anstellen muss wenn ich in einem z.B.: "IchWurdeAufgerufen.ps1" den Pfad des Scripts zu erhalten welches "IchWurdeAufgerufen.ps1" ursprünglich aufgerufen hat.
Ich möchte das ohne den Umweg über eine temporäre $env:* lösen und auch kein $arg übergeben.
Sollte doch in Powershell möglich sein irgendwie den Parent eines Child herauszubekommen. Oder liege/denke ich da falsch?
Danke für die Hilfe!
mayho
Ich frage mich momentan wie ich es anstellen muss wenn ich in einem z.B.: "IchWurdeAufgerufen.ps1" den Pfad des Scripts zu erhalten welches "IchWurdeAufgerufen.ps1" ursprünglich aufgerufen hat.
Ich möchte das ohne den Umweg über eine temporäre $env:* lösen und auch kein $arg übergeben.
Sollte doch in Powershell möglich sein irgendwie den Parent eines Child herauszubekommen. Oder liege/denke ich da falsch?
Danke für die Hilfe!
mayho
Please also mark the comments that contributed to the solution of the article
Content-ID: 237624
Url: https://administrator.de/contentid/237624
Printed on: December 6, 2024 at 17:12 o'clock
6 Comments
Latest comment
Hi mayho,
schau dir mal die Variable $MyInvocation und dessen Eigenschaften an:
Ja, ich weiß, es ist mal wieder die nicht lesbare Doku schuld
Grüße Uwe
schau dir mal die Variable $MyInvocation und dessen Eigenschaften an:
$MyInvocation.ScriptName
Grüße Uwe
hey ho.
Das stimmt so nicht, es gibt den kompletten Pfad des Scripts wieder welches das Script in dem $MyInvocation verwendet wird, aufgerufen hat ! Es enthält also immer das Vorgängerscript. Ist hier auch bei meinen Tests eindeutig nachvollziehbar und steht auch so in der Doku:
Das erste beinhaltet die komplette Befehlszeile des ersten Aufruf's der Konsole inklusive aller Parameter. Das zweite enthält alle Parameter in einem Array bereit.
Bei einem Aufruf eines Powershell-Scripts via Rechtsklick Ausführen mit Powershell... befindet sich der Scriptpfad an dritter Position des Arrays (
Es kommt hier aber wie gesagt darauf an wie das erste Script bzw. die Konsole (Das Environment) aufgerufen wird, sonst bleibt der Inhalt der Commands leer.
Grüße Uwe
Das stimmt so nicht, es gibt den kompletten Pfad des Scripts wieder welches das Script in dem $MyInvocation verwendet wird, aufgerufen hat ! Es enthält also immer das Vorgängerscript. Ist hier auch bei meinen Tests eindeutig nachvollziehbar und steht auch so in der Doku:
$MyInvocation
Contains an information about the current command, such as the name,
parameters, parameter values, and information about how the command was
started, called, or "invoked," such as the name of the script that called
the current command.
Contains an information about the current command, such as the name,
parameters, parameter values, and information about how the command was
started, called, or "invoked," such as the name of the script that called
the current command.
nicht das Ergebnis das ich haben will: Den Pfad zu dem Script das als erstes aufgerufen wurde
ah ok so meinst du das... hier sollten dir je nachdem wie deine erste Konsole aufgerufen wird, folgende zwei Commands helfen:[environment]::CommandLine
# oder
[environment]::GetCommandLineArgs()
Bei einem Aufruf eines Powershell-Scripts via Rechtsklick Ausführen mit Powershell... befindet sich der Scriptpfad an dritter Position des Arrays (
[environment]::GetCommandLineArgs()[2]
Es kommt hier aber wie gesagt darauf an wie das erste Script bzw. die Konsole (Das Environment) aufgerufen wird, sonst bleibt der Inhalt der Commands leer.
Grüße Uwe