Frage zu Powershell Parameter?

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

Wirst auch nichts dazu finden, weils Totaler Schwachsinn ist...

Wenn $MyInvocation.MyCommand.Path innerhalb einer Funktion aufgerufen wird, zeigt ...MyCommand auf diese und hat natürlich keinen Path 😏 logisch... also hangelt sich der Typ mit dem Abruf der Variable des übergeordneten Scops aus der Funktion heraus . Total Gaga🤡🥳 (ruft er seine hübsche Funktion innerhalb einer anderen Funktion auf ist er genauso weit wie zuvor und hat keinen Path) wenn Dir beim lesen meiner Erklärung übel 🤢 geworden ist, ...so gings mir als ich die Func sah..😵

Der ganze Terz nur, weil man 20022 noch Rücksicht auf Schnee von Gestern nimmt und dann auch noch eine Funktion definieren will?

Ganz Normal im Script aufgerufenn funktioniert dies:

 #alte Methode für Powershell v2.0  (gibts nicht auf Win10 Rechnern)
$MyInvocation.MyCommand.Path
Split-Path -par $MyInvocation.MyCommand.Path
$InstallPath = Split-Path -par $MyInvocation.MyCommand.Path

Keine Sau nutz mehr Win 7 und Powershell 2.0 ergo ist folgendes ok:

  #seit Powershell v3.0 :
$PSCommandPath  #volle Pfad des Scripts
$PSScriptRoot  #ordnerpfad  des Script
Split-Path -par $PSCommandPath  #ordnerpfad  des Scripts  mit der Kirche ums Dorf

...das kannst Du auch in eine Funktion schreiben... aber warum sollte man?


Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren
DNSxxx 
Fragesteller
 13.04.2022, 21:05

Hi. Danke für deine Antwort.

Nachdem ich ca. 2 Stunden versucht hatte den Code zu verstehen, in Google suchen und letztendlich auch diese Frage zu stellen, hab ich aufgegeben und nach Alternativen gesucht und anschließend auch die Variable $PSScriptRoot gefunden. Aber danke jetzt weiß ich das ich nicht mehr versuchen muß es zu verstehen.

Zum Thema Win7: wir haben leider schon noch pc auf denen win7 läuft in der Arbeit. Das sind PCs die zu Maschinen gehören, aber da ist zumindest Powershell 5 drauf 😀

Achja: Und das es in einer Funktion nicht mehr funktioniert bin ich auch drauf gestoßen, deshalb hab ich mich auch so intensiv damit beschäftigt.

1
Erzesel  14.04.2022, 09:52
@DNSxxx
Das sind PCs die zu Maschinen gehören

"Never Touch a running System"

Kenn ich nur zu gut. Ich hatte einen UraltRechner unter meinen Fittichen der lief bis 2017 noch unter Windows98 und steuerte autark eine Industrieanlage. Das Ding war ein "MoneyMaker" und die Vorbereitungen für die Umstellung auf eine neue Steuerung und Sensorik dauerte Jahre. (Der Umbau musste dann inner halb von 2 Tagen ohne Netz und doppelten Boden über die Bühne gehen) Die ganze Belegschaft hat gezittert, als wir die Anlage wieder hochfuhren....

1