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-ID: 5479482169

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

Ausgedruckt am: 22.11.2024 um 03:11 Uhr

13034433319
Lösung 13034433319 16.05.2024 aktualisiert um 18:12:34 Uhr
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ß
UnbekannterNR1
UnbekannterNR1 16.05.2024 um 18:05:32 Uhr
Goto Top
Vielleicht lieber relative Pfade nutzen? Also ../ was nutzt Dir Laufwerksbuchstabe, falls jemand den Installer in einen Unterordner kopiert
Bommi1961
Bommi1961 16.05.2024 um 18:30:52 Uhr
Goto Top
Vielen Dank schon mal, ich werde es später testen.

VG
mbehrens
Lösung mbehrens 16.05.2024 um 19:20:06 Uhr
Goto Top
Zitat von @13034433319:

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.
CamelCase
Lösung CamelCase 16.05.2024 um 19:22:43 Uhr
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.
mbehrens
Lösung mbehrens 16.05.2024 um 19:26:28 Uhr
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
CamelCase
Lösung CamelCase 16.05.2024 aktualisiert um 19:33:27 Uhr
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.
Bommi1961
Lösung Bommi1961 16.05.2024 um 20:20:58 Uhr
Goto Top
Vielen vielen Dank euch allen hat geklappt.