bommi1961
Goto Top

Laufwerksbuchstabe herausfinden vom dem aus ein PS Skript ausgeführt wird

Hallo,

ich habe eine PS Skript erstellen. Das Srikpt habe ich in eine .Exe umgewandelt. Jetzt möchte ich ein Installprogramm schreiben, womit ich mein Programm "installie" kann.
Wie bekomme ich es hin, das PS weiß, von welchem Laufwerk es gestartet wird?

Das Installprogramm kopiert eigentlich nur Dateien und Verzeichnis, muss aber natürlich wiesen von welchem LW es kopieren soll.

Bin für jeden Tipp Dankbar.


VG

Content-Key: 5479482169

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

Printed on: June 21, 2024 at 06:06 o'clock

Member: hempel
Solution hempel May 16, 2024 updated at 16:12:34 (UTC)
Goto Top
$psscriptroot liefert dir den Ordner des Skript, davon kannst du alles ableiten, auch den Laufwerksbuchstaben, aber wozu wenn man schon den Skriptpfad hat, dann kann man relativ davon die Pfade ableiten...
# Ordner des aktuellen Skripts
$psscriptroot
# Laufwerk des Skripts
Split-Path $psscriptroot -qualifier
# z.B. Elternordner des Skriptordners holen
(Get-Item $psscriptroot).Parent.Fullname
# usw.
about_Automatic_Variables ($psscriptroot)

Gruß
Member: UnbekannterNR1
UnbekannterNR1 May 16, 2024 at 16:05:32 (UTC)
Goto Top
Vielleicht lieber relative Pfade nutzen? Also ../ was nutzt Dir Laufwerksbuchstabe, falls jemand den Installer in einen Unterordner kopiert
Member: Bommi1961
Bommi1961 May 16, 2024 at 16:30:52 (UTC)
Goto Top
Vielen Dank schon mal, ich werde es später testen.

VG
Member: mbehrens
Solution mbehrens May 16, 2024 at 17:20:06 (UTC)
Goto Top
Zitat von @hempel:

Irgendwie nicht face-sad

Das liefert hier nur:
ERROR: Das Argument kann nicht an den Parameter "Path" gebunden werden, da es sich um eine leere Zeichenfolge handelt.
Member: CamelCase
Solution CamelCase May 16, 2024 at 17:22:43 (UTC)
Goto Top
ERROR: Das Argument kann nicht an den Parameter "Path" gebunden werden, da es sich um eine leere Zeichenfolge handelt.

Heißt $PSScriptRoot ist vermutlich leer, das klappt nicht wenn du das z.B. in der ISE ausführst. Klappt nur wenn das Skript gespeichert und von da ausgeführt wird.
Member: mbehrens
Solution mbehrens May 16, 2024 at 17:26:28 (UTC)
Goto Top
Zitat von @CamelCase:

ERROR: Das Argument kann nicht an den Parameter "Path" gebunden werden, da es sich um eine leere Zeichenfolge handelt.

Heißt $PSScriptRoot ist vermutlich leer, das klappt nicht wenn du das z.B. in der ISE ausführst. Klappt nur wenn das Skript gespeichert und von da ausgeführt wird.

Das gilt dann vermutlich auch für die EXE Umgebung face-wink
Member: CamelCase
Solution CamelCase May 16, 2024 updated at 17:33:27 (UTC)
Goto Top
Zitat von @mbehrens:

Zitat von @CamelCase:

ERROR: Das Argument kann nicht an den Parameter "Path" gebunden werden, da es sich um eine leere Zeichenfolge handelt.

Heißt $PSScriptRoot ist vermutlich leer, das klappt nicht wenn du das z.B. in der ISE ausführst. Klappt nur wenn das Skript gespeichert und von da ausgeführt wird.

Das gilt dann vermutlich auch für die EXE Umgebung face-wink

Ich meine mich zu erinnern mit PS2EXE Probleme mit $PSScriptRoot gehabt zu haben. Hab mal grad ein Skript rausgesucht was ich mit PS2EXE zur exe gemacht habe. Dort habe ich $PSScriptRoot so abgefragt:

$ScriptPath = if (-not $PSScriptRoot) { Split-Path -Parent (Convert-Path ([environment]::GetCommandLineArgs()[0])) } else { $PSScriptRoot }

Und dann die obigen Methoden um ans Laufwerk zu kommen.
Member: Bommi1961
Solution Bommi1961 May 16, 2024 at 18:20:58 (UTC)
Goto Top
Vielen vielen Dank euch allen hat geklappt.