Top-Themen

Aktuelle Themen (A bis Z)

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

Mitglied: mayho33

mayho33 (Level 2) - Jetzt verbinden

09.05.2014, aktualisiert 13.05.2014, 2726 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 ..
Ähnliche Inhalte
Microsoft Office

Pfad der Dokumentenvorlage mit einem Powershell Script ändern?

Frage von JanowitschMicrosoft Office7 Kommentare

Hallo Leute, Anwender nehmen in Word leider viel zu oft alte Dokumente als Vorlage für neue Dokumente her und ...

Windows Server

Powershell: Freigabename finden, wenn lokaler Pfad bekannt ist

gelöst Frage von CthluhuWindows Server4 Kommentare

Hallo zusammen! Auf einem Win 2012 R2 Server habe ich ein Powershell Script (nicht von mir erstellt, sondern übernommen) ...

Windows 8

Xcopy kann den Pfad nicht finden warum?

gelöst Frage von Mbrgel69Windows 86 Kommentare

Wenn ich ein Batch mit xcopy schreibe: echo off xcopy *.bat C:\test\ pause Kopiert er diese ohne Probleme! Möchte ...

Windows Server

Powershell Script in Script ausführen

Frage von diematrix125Windows Server2 Kommentare

Hallo! Ich habe hier momentan zwei verschiedene Skripte: 1. Skript zum Erstellen von Usern 2. Skript zum Erstellen der ...

Neue Wissensbeiträge
Sicherheit
Sicherheitsrisiko: Die Krux mit 7-Zip
Information von kgborn vor 1 StundeSicherheit

Bei vielen Anwendern ist das Tool 7-Zip zum Entpacken von Archivdateien im Einsatz. Die Software ist kostenlos und steht ...

Internet

Datendealing im WWW Tracking Methoden immer brutaler

Information von sabines vor 10 StundenInternet

Interessanter Artikel zum Thema Tracking im WWW und die immer "besseren" Methoden des Trackings. Professor Arvind Narayanan (Princeton-Universität) betreibt ...

Erkennung und -Abwehr

Ups: Einfaches Nullzeichen hebelte den Anti-Malware-Schutzt in Windows 10 aus

Information von kgborn vor 22 StundenErkennung und -Abwehr

Windows 10 ist das sicherste Windows aller Zeiten, wie Microsoft betont. Insidern ist aber klar, das es da Lücken, ...

Windows 10

Windows 10 on ARM: von Microsoft entfernte Info - Klartext, was nicht geht

Information von kgborn vor 1 TagWindows 10

Windows 10 on ARM ist ja eine neue Variante, die Microsoft im Verbund mit Geräteherstellern am Markt etablieren will. ...

Heiß diskutierte Inhalte
Server
Route-Befehl Unterstützung (unter CMD)
gelöst Frage von FKRR56Server36 Kommentare

Guten Tag , i.M. habe ich Probleme über den CMD-Route-Befehl ein Routing auf einen entfernten Server zuzulassen. Der Server ...

Windows 10
Windows 10 (1709) Tastur und Maus wieder einschalten?
Frage von LochkartenstanzerWindows 1028 Kommentare

Moin, Ich habe von einem Kunden einen Win10-Rechner bekommen, bei dem weder Tastatur noch Maus geht. Die Hardware funktioniert ...

Microsoft
TV-Tipp: Das Microsoft-Dilemma
Information von kgbornMicrosoft17 Kommentare

Aktuell gibt es in Behörden und in Firmen eine fatale Abhängigkeit von Microsoft und dessen Produkten. Planlos agieren die ...

Firewall
RB2011 Firewall Rule eine bestimmte Mac oder IP Adresse nicht zu blockieren
Frage von lightmanFirewall15 Kommentare

Hallo liebes Forum mit ihren Spezialisten. Ich habe meine Firewall so konfiguriert das kein Endgerät ohne meine Speziellen Erlaubnis ...