ralus67
Goto Top

Dp0 Alternative in Powershell

Hallo Forummitglieder

Ich möchte über Powershell Applikationen installieren. Dabei möchte ich, dass Powershell die Installationsquelle Dynamisch findet.

Unter Batch war dies folgendermassen möglich

Wenn ich z.B in einem Verzeichnis als Beispiel C:\Work eine Batch Datei erstelle, welcche die %~dp0setup.exe als Eintrag hat, dann wird das setup.exe ausgeführt und der entsprechende Pfad in welchem die Datei liegt vorgängig angehängt. Also C:\Work\setup.exe

Nun bräuchte ich eine Alternative für den %~dp0 in Powershell.

Ich habe folgender Befehl versucht, aber dieser funktioniert auf meiner Windows 10 Maschine nicht

$ScriptRoot = Split-Path $MyInvocation.MyCommand.Path –Parent

Wie müsste das Skript aussehen, so das das Setup.exe mit dem dynamischen Pfad ausgeführt wird?


Vielen Dank im Voraus für Eure Hilfe.

Content-Key: 619767

Url: https://administrator.de/contentid/619767

Ausgedruckt am: 29.03.2024 um 15:03 Uhr

Mitglied: 146189
146189 06.11.2020 aktualisiert um 13:45:01 Uhr
Goto Top
Mitglied: Ralus67
Ralus67 06.11.2020 um 13:50:17 Uhr
Goto Top
Hallo Window

Kannst du mir ein Beispiel zeigen, wie das in einer ps1 aussehen müsste?
Mitglied: 146189
Lösung 146189 06.11.2020 aktualisiert um 15:09:20 Uhr
Goto Top
Zitat von @Ralus67:

Hallo Window

Kannst du mir ein Beispiel zeigen, wie das in einer ps1 aussehen müsste?
?? Steht doch oben, die Variable $psscriptroot wird automatisch von der Powershell mit dem Pfad gefüllt indem das Skript liegt ...
Einfach mal den Link lesen bitte! Danke.

Du kannst diese nicht in der ISE ausprobieren, dazu musst du sie in ein Skript schreiben und dieses dann ausführen, weil sie nur gefüllt wird wenn sie in einem Skript liegt!

In einem Skript kannst du die Variable dann wie gehabt nutzen und mit anderen Strings kombinieren
"$psscriptroot\datei.exe"  
Mitglied: mayho33
mayho33 07.11.2020 um 22:43:20 Uhr
Goto Top
Alternativ zum Weg den dir @Windows schon geschildert hat ginge auch get-Location.

In beiden Fällen muss aber ein Script dahinter stehen. In der Console bekommst du nur $Null zurück.

Grüße!
Mitglied: rzlbrnft
rzlbrnft 09.11.2020 um 09:17:12 Uhr
Goto Top
Wieso nicht einfach .\setup.exe?
Mitglied: 146189
146189 09.11.2020 aktualisiert um 09:46:21 Uhr
Goto Top
Zitat von @rzlbrnft:
Wieso nicht einfach .\setup.exe?
Weil das aktuelle Verzeichnis (Working Dir) nicht zwingend das sein muss in dem auch das Skript liegt. Z.B. wenn das Skript elevated ausgeführt wird ist dann oft C:\Windows\system32 das aktuelle "Working Dir" und dann fällt das auf die Fresse.

Aber offensichtlich hat der TO sowieso das Interesse verloren, warum auch immer ... Steht ja oben alles mehrfach sauber erläutert.
Mitglied: mayho33
mayho33 09.11.2020 um 09:44:23 Uhr
Goto Top
Zitat von @rzlbrnft:

Wieso nicht einfach .\setup.exe?

Weil sich A) nicht immer alles immer im gleichen Folder befinden muss oder B) man manchmal auch nur feststellen von wo aus das Script agiert um den Pfad an eine Funktion oder als Return ausgeben zu können.

Für mich klingt die Frage des TO schlüssig.