Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Powershell: Pfad des Scripts finden das ein anderes aufgerufen hast

Frage Entwicklung Batch & Shell

Mitglied: mayho33

mayho33 (Level 2) - Jetzt verbinden

09.05.2014, aktualisiert 13.05.2014, 2190 Aufrufe, 6 Kommentare

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
Mitglied: colinardo
09.05.2014, aktualisiert um 13:19 Uhr
Hi mayho,
schau dir mal die Variable $MyInvocation und dessen Eigenschaften an:
$MyInvocation.ScriptName
Ja, ich weiß, es ist mal wieder die nicht lesbare Doku schuld

Grüße Uwe
Bitte warten ..
Mitglied: mayho33
11.05.2014 um 14:21 Uhr
Hi Uwe!

Ne diesmal ist die Doku kein bisschen schuld. Ich kann da drinnen einfach nicht finden was ich brauche.

$MyInvocation.ScriptName gibt ja nur den Namen des eigenen Scripts wider. Auch die anderen Properties von $MyInvocation liefern nicht das Ergebnis das ich haben will: Den Pfad zu dem Script das als erstes aufgerufen wurde und welches alle anderen Scripts aufruft.

BSP:

StartScript.ps1 >>>ruft<<< GehSchlafen.ps1 >>>ruft<<< PutzDirVorherDieZaehne.ps1 >>>ruft<<< OderDochNochEineRauchen.ps1 >>>ruft<<< PinkelnWaerAuchNichtSchlecht.ps1

PinkelnWaerAuchNichtSchlecht.ps1 möchte nun wisses welches das Script war das als erstes aufegrufen wurde (StartScript.ps1).

Dazu finde ich einfach nichts.

lg

Mayho
Bitte warten ..
Mitglied: colinardo
LÖSUNG 11.05.2014, aktualisiert 13.05.2014
hey ho.
Zitat von mayho33:
$MyInvocation.ScriptName gibt ja nur den Namen des eigenen Scripts wider.
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.


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()
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 ([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
Bitte warten ..
Mitglied: SaschaRD
LÖSUNG 13.05.2014, aktualisiert 16.05.2014
Hallöchen,

suchst Du so etwas?
01.
Get-ChildItem '.\' | WHERE {$_.extension -like '*.ps1'} | % { 
02.
	Write-Host $_.FullName -ForegroundColor Blue 
03.
	}
Gruß, Sascha
Bitte warten ..
Mitglied: mayho33
13.05.2014 um 10:33 Uhr
Hi Uwe!

Zitat von colinardo:

hey ho.
> Zitat von mayho33:
> $MyInvocation.ScriptName gibt ja nur den Namen des eigenen Scripts wider.
Das stimmt so nicht, es gibt den kompletten Pfad des Scripts wieder...

Ja! Muss wohl genauer beschreiben..

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() 
> 
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 ([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.

Suuuuper! Habe mich im Framework schon auf die Suche gemacht, aber wo anfangen. Da fehlt mir echt noch der Überblick, obwohl ich schon lange code. MS hat ja ne ganz eigene Art zuzuordnen....Ich auch...
Hab's zwar noch nicht getestet, aber ich glaube ich kann davon ausgehen, dass es funkt...wie immer!

lg

mayho
Bitte warten ..
Mitglied: mayho33
13.05.2014, aktualisiert 16.05.2014
Hi Sascha!

Ne eigentlich nicht! Ich möchte schon genau wissen wer "mich" (das Script am Ende des Ratten###es) von wo aufruft. Sie das Beispiel weiter oben.

lg

Mayho

EDIT: 16.05.2014

Hi Uwe!

zu:
Zitat von colinardo:
$MyInvocation.ScriptName gibt ja nur den Namen des eigenen Scripts wider.

Da habe ich anfangs wohl was falsch gemacht. Gibt braf den Name/Pfad zurück des Script welches aufruft.

Zitat von colinardo:
[environment]::CommandLine
  1. oder
[environment]::GetCommandLineArgs()


Gibt leider auch nicht die ganze Befehlskette zurück, aber damit muss ich wohl leben.

Danke für die Hilfe!

lg Mayho!
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(1)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst Powershell Versteckte Dateien finden und wieder sichtbar machen (4)

Frage von pixel0815 zum Thema Batch & Shell ...

Batch & Shell
gelöst Powershell Primäresmtpadresse an anderes Postfach übertragen (15)

Frage von 124611 zum Thema Batch & Shell ...

Batch & Shell
Problem mit UNC-Pfad ? powershell-skript (2)

Frage von today12 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...