Запускать и редактировать Perl / Python / non-Powershell - скрипт в Powershell_ISE (Windows Server)

684
eli

Я на Windows Server (2012) с Powershell_ISE, и перед установкой дополнительного программного обеспечения я хотел отредактировать и протестировать скрипт в Powershell_ISE (это более подходящее решение, чем использование notepad + cmd.exe из-за редактирования с вкладками, например)

Идея: Сочетание клавиш для пункта меню (в разделе «Дополнения» в меню), где perl.exe вызывается с текущим путем сценария в качестве параметра.

Я пробовал следующие строки:

$psISE.CurrentPowerShellTab.AddOnsMenu.Submenus.Add("Perl",{$cur=$psISE.CurrentFile; saps "c:\strawberry\perl\bin\perl.exe" $cur.FullPath },'Ctrl+Alt+q') 

(с помощью saps = start-process) или

$psISE.CurrentPowerShellTab.AddOnsMenu.Submenus.Add("Perl",{$cur=$psISE.CurrentFile; & "c:\strawberry\perl\bin\perl.exe" $cur.FullPath },'Ctrl+Alt+e') 

(с помощью & = выполнить внешнюю команду) или

$psISE.CurrentPowerShellTab.AddOnsMenu.Submenus.Add("Perl",{$cur=$psISE.CurrentFile; saps "c:\strawberry\perl\bin\perl.exe" $cur.FullPath -wait },'Ctrl+Alt+w') 

(начать процесс и ждать)

Вскоре мигает окно cmd, но на панели консоли нет выходных данных. (Perlscript просто печатает «test» и работает, когда выполняется напрямую, запустив: & "c:\strawberry\perl\bin\perl.exe" $cur.FullPathв панели консоли)

Если это сработает, вы можете добавить эту строку в профиль $ Powersehll_ISE, чтобы редактировать / выполнять скрипты всех языков, вызывая соответствующий двоичный файл.

0

1 ответ на вопрос

0
eli

Через минуту я попробовал следующую строку (с &в сочетании с -waitи это работает:

$psISE.CurrentPowerShellTab.AddOnsMenu.Submenus.Add("Perl-Menu_Entry",{$cur=$psISE.CurrentFile; & "c:\strawberry\perl\bin\perl.exe" $cur.FullPath -wait },'Ctrl+Alt+y') 

(вы также можете использовать клавиши «F» - например: вместо «ctrl + alt + y» просто используйте «F4»)

Чтобы сохранить файл перед выполнением, добавьте $psise.CurrentFile.Save()в строку:

$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')