Я на 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, чтобы редактировать / выполнять скрипты всех языков, вызывая соответствующий двоичный файл.

1 ответ1

0

Через минуту я попробовал следующую строку (с & в сочетании с -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') 

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .