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

Printed on: May 4, 2024 at 05:05 o'clock

Mitglied: 146189
146189 Nov 06, 2020 updated at 12:45:01 (UTC)
Goto Top
Member: Ralus67
Ralus67 Nov 06, 2020 at 12:50:17 (UTC)
Goto Top
Hallo Window

Kannst du mir ein Beispiel zeigen, wie das in einer ps1 aussehen müsste?
Mitglied: 146189
Solution 146189 Nov 06, 2020 updated at 14:09:20 (UTC)
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"  
Member: mayho33
mayho33 Nov 07, 2020 at 21:43:20 (UTC)
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!
Member: rzlbrnft
rzlbrnft Nov 09, 2020 at 08:17:12 (UTC)
Goto Top
Wieso nicht einfach .\setup.exe?
Mitglied: 146189
146189 Nov 09, 2020 updated at 08:46:21 (UTC)
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.
Member: mayho33
mayho33 Nov 09, 2020 at 08:44:23 (UTC)
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.