Frage zu Powershell Parameter?
Hallo,
ich habe im Internet was gefunden wie man den Pfad des gerade Verwendeten Skripts auslesen und Weiterverwenden kann. Dazu hätte ich eine Frage dass ich (Powershell-Neuling) auch verstehe.
Der Code lautet:
function Get-ScriptDirectory {
$Invocation = (Get-Variable MyInvocation -Scope 1).Value
Split-Path $Invocation.MyCommand.Path
}
$installpath = Get-ScriptDirectory
Was macht hier das:
-Scope 1
Finde da leider auf Dr. Google nichts dazu (oder ich stell mich zu Blöd an bei der Suche. Und selbst zusammen reimen kann ich es mir auch nicht.
Vielen Dank im Voraus für die Hilfe
1 Antwort
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?
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....
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.