.png)
Ich bin auf einem Windows Server (2012) mit Powershell_ISE und bevor ich zusätzliche Software installiere, wollte ich ein Skript in der Powershell_ISE bearbeiten und testen (es ist eine bessereeinheimischLösung als die Verwendung von Notepad + cmd.exe, beispielsweise wegen der Bearbeitung mit Registerkarten)
Idee: Tastaturkürzel zu einem Menüeintrag (unter "Add-Ons" im Menü), wo dieperl.exewird mit dem aktuellen Skriptpfad als Parameter aufgerufen.
Ich habe die folgenden Zeilen ausprobiert:
$psISE.CurrentPowerShellTab.AddOnsMenu.Submenus.Add("Perl",{$cur=$psISE.CurrentFile; saps "c:\strawberry\perl\bin\perl.exe" $cur.FullPath },'Ctrl+Alt+q')
(mit saps=start-process) oder
$psISE.CurrentPowerShellTab.AddOnsMenu.Submenus.Add("Perl",{$cur=$psISE.CurrentFile; & "c:\strawberry\perl\bin\perl.exe" $cur.FullPath },'Ctrl+Alt+e')
(mit & = externes Kommando ausführen) oder
$psISE.CurrentPowerShellTab.AddOnsMenu.Submenus.Add("Perl",{$cur=$psISE.CurrentFile; saps "c:\strawberry\perl\bin\perl.exe" $cur.FullPath -wait },'Ctrl+Alt+w')
(Prozess starten und warten)
Ein cmd-Fenster blinkt kurz auf, aber im Konsolenfenster erscheint keine Ausgabe. (Das Perlscript gibt nur „test“ aus und funktioniert, wenn es direkt durch Ausführen von: & "c:\strawberry\perl\bin\perl.exe" $cur.FullPath
im Konsolenfenster ausgeführt wird.)
Wenn dies funktionieren würde, könnten Sie diese Zeile zum $profile von Powersehll_ISE hinzufügen, um Skripte aller Sprachen zu bearbeiten/auszuführen, indem Sie die entsprechende Binärdatei aufrufen
Antwort1
Eine Minute später habe ich die folgende Zeile ausprobiert (mit &
in Kombination mit -wait
und es funktioniert:
$psISE.CurrentPowerShellTab.AddOnsMenu.Submenus.Add("Perl-Menu_Entry",{$cur=$psISE.CurrentFile; & "c:\strawberry\perl\bin\perl.exe" $cur.FullPath -wait },'Ctrl+Alt+y')
(Sie können auch die „F“-Tasten verwenden – z. B. statt „Strg+Alt+Y“ einfach „F4“ verwenden)
Um die Datei vor der Ausführung zu speichern, fügen Sie $psise.CurrentFile.Save()
der Zeile hinzu:
$psISE.CurrentPowerShellTab.AddOnsMenu.Submenus.Add("Perl-Menu_Entry",{$psise.CurrentFile.Save(); $cur=$psISE.CurrentFile; & "c:\strawberry\perl\bin\perl.exe" $cur.FullPath -wait },'Ctrl+Alt+y')