Benutzer mit den meisten Antworten
Verzeichnis auslesen und als Menü anzeigen

Frage
-
Hallo,
ich legen meine Powershell Scripte in einem Verzeichnis ab. Nun möchte ich nicht 30 Verknüpfungen auf meinem Desktop haben sondern nur noch eine. Das Script soll ein Verzeichnis auslesen und mir die Scriptnamen in dem Verzeichnis ausgeben und zur Auswahl anbieten. Dann möchte ich eine Auswahl treffen und dass das Script aus dem Verzeichnis dann gestartet wird. Zu Anfang frage ich noch den Computernamen ab.
Das Abfragen, auslesen des Verzeichnis und der Aufbau des Menüs funktioniert schon. Nur das mit dem übergeben der Auswahl funktioniert leider nicht. Erkennt jemand wieso?
cls $Quelle = "\\SRV0016\d$\Tools\Powershell_Scriptsammlung" $Auswahl = $nul # Auslesen des Ordners $Files = gci -name -Path $Quelle *.ps1 | foreach {$_ -replace ".ps1", ""} $Computername = Read-Host 'Bitte Computername eingeben' Write-Host "Computername: $Computername" Write-Host "-------------------------" # zählen der Namen imOrdner # (gci $Quelle -filter *.ps1).count #foreach ($i in $Files) # {Write-Host $i} If(@($Files).count -lt 1) { Write-host "Keine Script gefunden!" $a = Read-Host "beliebige Taste drücken" Exit } $Zähler = 1 ForEach($i in $Files) { Write-Host "$Zähler : $i" # Zähler hochzählen $Zähler++ } # user auswahl abfragen $Auswahl = Read-Host 'Bitte Auswahl treffen (oder E zum Ende)' # Usr möchten den zauber beenden und hat A eingegeben If($Auswahl -eq 'E') { Write-host 'Script beendet.' $a = Read-Host "beliebige Taste drücken" Exit } # Auswahl ausführen Start-Process powershell.exe "$Quelle\$Files[$Auswahl].ps1 $computername" Write-host "" Write-host "-------------------------------------" Write-host "Auswahl:" $Files[$Auswahl]
Wenn 10 Scripte gefunden werden, dann werden diese aus angezeigt. Wähle ich dann z.B. Punkt 9 aus, dann steht hinter Auswahl auch der Richtige Name. Nur wurde nicht das Script 9 gestartet sondern immer das Script 1 gestartet.
Wieso steht hier: Write-host "Auswahl:" $Files[$Auswahl] der richtige Name und hinter Start-Prozess nicht?
IT Berater
Antworten
-
Um solche Fehler zu finden sollte man IMMER zu 100% das ausgeben lassen was man auch benutzen will!
# Auswahl ausführen Write-Host "Dies wird Ausgeführt siehst du den Fehler? ;-)" Write-Host "$Quelle\$Files[$Auswahl].ps1 $computername" Start-Process powershell.exe "$Quelle\$Files[$Auswahl].ps1 $computername"
1. Du musst bei Werten die innerhalb eines Strings berechnet oder ausgeführt werden sollen eine Subexpression benutzen $().
2. In der IT wird bei der 0 angefangen zu Zählen. Der erste Index eines Arrays ist die 0!
Deine Zeile: $Zähler = 1 ist falsch! $Zähler = 0 ist richtig!
ändere die Zeile so:
"$Quelle\$($Files[$Auswahl]).ps1 $computername"
Meine PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
Mein deutscher PowerShell Blog
Mein 21 Teiliger PowerShell Video Grundlehrgang
Deutsche PowerShell Videos auf Youtube
Folge mir auf:
Twitter | Facebook | Google+ | Deutsches PowerShell Forum (TechNet)- Bearbeitet Peter Kriegel Donnerstag, 14. November 2013 11:35
- Als Antwort markiert NBC2009 Donnerstag, 14. November 2013 13:31
Alle Antworten
-
Um solche Fehler zu finden sollte man IMMER zu 100% das ausgeben lassen was man auch benutzen will!
# Auswahl ausführen Write-Host "Dies wird Ausgeführt siehst du den Fehler? ;-)" Write-Host "$Quelle\$Files[$Auswahl].ps1 $computername" Start-Process powershell.exe "$Quelle\$Files[$Auswahl].ps1 $computername"
1. Du musst bei Werten die innerhalb eines Strings berechnet oder ausgeführt werden sollen eine Subexpression benutzen $().
2. In der IT wird bei der 0 angefangen zu Zählen. Der erste Index eines Arrays ist die 0!
Deine Zeile: $Zähler = 1 ist falsch! $Zähler = 0 ist richtig!
ändere die Zeile so:
"$Quelle\$($Files[$Auswahl]).ps1 $computername"
Meine PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
Mein deutscher PowerShell Blog
Mein 21 Teiliger PowerShell Video Grundlehrgang
Deutsche PowerShell Videos auf Youtube
Folge mir auf:
Twitter | Facebook | Google+ | Deutsches PowerShell Forum (TechNet)- Bearbeitet Peter Kriegel Donnerstag, 14. November 2013 11:35
- Als Antwort markiert NBC2009 Donnerstag, 14. November 2013 13:31
-
Hallo Peter,
vielen Dank für deine Hilfe.
Write-Host und deine Zeile zeigt alles richtig an. Hinter Start-Process kommt leider ein Fehler:
Write-Host "$Quelle\$($Files[$Auswahl]).ps1 $computername" Start-Process "$Quelle\$($Files[$Auswahl]).ps1 $computername"
\\SRV004\d$\Tools\Powershell_Scriptsammlung\Support.ps1 Client0007
Start-Process : This command cannot be executed due to the error: Das System kann die angegebene Datei nicht finden.
At \\SRV004\d$\Tools\Powershell_Scriptsammlung\Menue.ps1:52 char:14
+ Start-Process <<<< "$Quelle\$($Files[$Auswahl]).ps1 $computername"
+ CategoryInfo : InvalidOperation: (:) [Start-Process], InvalidOperationException
+ FullyQualifiedErrorId : InvalidOperationException,Microsoft.PowerShell.Commands.StartProcessCommandIT Berater