Benutzer mit den meisten Antworten
kann skript beim ausführen nach wert einer variable fragen?

Frage
-
hallo,
ich habe ein skript in dem ich etwas mit einem pfad mache - jetzt möchte ich gern, dass wenn ich das skript ausführe eine art popup kommt und er mich nach dem pfad, sprich wert für die variable pfad fragt. ich gebe den pfad ein und das skritp wird mit diesem wert ausgeführt.
einen schritt weiter - gibt es (wenn das oben überhaupt möglich ist) ein fertiges cmdlet das er beim abfragen der variable eine art pfad-durchsuchen button zur verfügung stellt, mit dem ich den richtigen pfad wie in windows üblich per fenster machen kann?
hoffe das ist verständlich
mfg puntipik
Antworten
-
Hallo puntipik,
Du kannst die BrowseForFolder Methode des Shell.Application COM Objektes verwenden:
$Shell = New-Object -ComObject Shell.application
$return = $Shell.BrowseForFolder(0,"Bitte Ordner wählen","1","c:")
$return.Self.Path
VG
Bernd
- Als Antwort markiert Andrei TalmaciuModerator Mittwoch, 17. Februar 2010 07:49
-
Hallo puntipik,
das kann man so pauschal leider nicht sagen.
Es hängt z.B. von der Art der Parameter und von dem zu startenden Programm ab.
Folgende Vorgehensweise sollte aber immer funktionieren:
$param1 = 'localhost'
$param2 = '-n 3'
$Befehl = Get-Command 'D:\Program Files (x86)\Test\ping.exe'
Invoke-Expression "$Befehl $Param1 $Param2"
Entscheidend ist die fett markierte Stelle. Würdes Du der Variable $Befehl nur den Pfad zuweisen würde es nicht funktionieren.
Durch Get-Command wird daraus ein CommandInfo Objekt mit dem der Aufruf dann auch klappt.
VG
Bernd- Als Antwort markiert Andrei TalmaciuModerator Mittwoch, 17. Februar 2010 07:49
Alle Antworten
-
hallo,
ich hab jetzt mal bezüglich cmd.exe geschaut. dort gibt es den befehl "set /p variable=Bitte einen Text eingeben:". damit kann ich beim ausführen einen indiviuellen wert für die variable "variable" setzen.
gibt es das auch für ps, und vielleicht auch auf ordner bezogen mit einem durchsuchen-button?
mfg -
1.Lösung: Verwendet COM-Objekt
$wshshell = new-object -comobject wscript.shell
$variable = $wshshell.popup("Bitte Text eingeben", 0, "Titel", 4)
Dabei ist "0" der Timeoutwert (0 = Ewig), "4" steuert die Buttons (4 = "Ja/Nein"). Vgl. MessageBox()-Steuerparameter.
2. Lösung: Pure PowerShell
$variable = Read-Host "Bitte Text eingeben: "
-
Hallo puntipik,
Du kannst die BrowseForFolder Methode des Shell.Application COM Objektes verwenden:
$Shell = New-Object -ComObject Shell.application
$return = $Shell.BrowseForFolder(0,"Bitte Ordner wählen","1","c:")
$return.Self.Path
VG
Bernd
- Als Antwort markiert Andrei TalmaciuModerator Mittwoch, 17. Februar 2010 07:49
-
hallo,
super funktioniert sehr gut.
wie kann ich jetzt am besten ein programm mit diesen parametern aufrufen?
gewünschter aufruf:
pfad = zb. c:\hallo
zeit = zb: 5
"c:\... ...\test.exe" -c 9 -C $zeit "$pfad"
rauskommen sollte
c:\... ...\test.exe -c 9 -C 5 "c:\hallo"
ich weiß mit invoke-expression geht dass, mir ist aber nicht klar, wie ich die variablen einbeziehe und wie ich das mit den anführungszeichen mache - zb soll der pfad mit anfürhungszeichen übergeben werden.
mfg -
Hallo puntipik,
das kann man so pauschal leider nicht sagen.
Es hängt z.B. von der Art der Parameter und von dem zu startenden Programm ab.
Folgende Vorgehensweise sollte aber immer funktionieren:
$param1 = 'localhost'
$param2 = '-n 3'
$Befehl = Get-Command 'D:\Program Files (x86)\Test\ping.exe'
Invoke-Expression "$Befehl $Param1 $Param2"
Entscheidend ist die fett markierte Stelle. Würdes Du der Variable $Befehl nur den Pfad zuweisen würde es nicht funktionieren.
Durch Get-Command wird daraus ein CommandInfo Objekt mit dem der Aufruf dann auch klappt.
VG
Bernd- Als Antwort markiert Andrei TalmaciuModerator Mittwoch, 17. Februar 2010 07:49