Выполнить файл powershell одним нажатием кнопки на командном файле - PullRequest
0 голосов
/ 28 июня 2019

Я пытаюсь написать командный файл, который выполняет другой файл powershell одним нажатием кнопки на интерфейсе.

<!-- :: Batch section
@echo off
SET "ThisScriptsDirectory=%~dp0"
SET "PowerShellScriptPathAdd=%ThisScriptsDirectory%powershelladd.ps1"
SET "PowerShellScriptPathRemove=%ThisScriptsDirectory%powershellremove.ps1"

#PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Start-Process 
PowerShell -ArgumentList '-NoProfile -ExecutionPolicy Bypass -File ""%PowerShellScriptPathAdd%""'}"


echo Select an option:
for /F "delims=" %%a in ('mshta.exe "%~F0"') do set "HTAreply=%%a"
echo End of HTA window, reply: "%HTAreply%"
goto :EOF
-->



<HTML>
<HEAD>
<HTA:APPLICATION SCROLL="no" SYSMENU="no" >

<TITLE>HTA Buttons</TITLE>
<SCRIPT language="JavaScript">
window.resizeTo(374,100);

function closeHTA(reply){
   var fso = new ActiveXObject("Scripting.FileSystemObject");
   fso.GetStandardStream(1).WriteLine(reply);
   window.close();
}

</SCRIPT>
</HEAD>
<BODY>
   <button onclick=PowerShell -NoProfile -ExecutionPolicy Bypass -Command 
"& {Start-Process PowerShell -ArgumentList '-NoProfile -ExecutionPolicy 
Bypass -File ""%PowerShellScriptPathAdd%""'}">Add User</button>
   <button onclick=PowerShell -NoProfile -ExecutionPolicy Bypass -Command 
"& {Start-Process PowerShell -ArgumentList '-NoProfile -ExecutionPolicy 
Bypass -File ""%PowerShellScriptPathRemove%""' -Verb RunAs}">Remove 
User</button>
   <button onclick="closeHTA(3);">Exit</button>
</BODY>
</HTML>

Я попытался запустить код без нажатия кнопки, и он работаетхорошо.Я хочу, чтобы он выполнял определенный файл при нажатии разных кнопок.

1 Ответ

0 голосов
/ 29 июня 2019

Вы должны выполнить код PowerShell в командном файле .Вы не можете напрямую запустить PowerShell (или, в данном случае, пакетный файл) со страницы Web / HTA.

Чтобы сделать это, вам нужно следовать совету, данному на этом ответе .

<!-- :: Batch section
@echo off
setlocal

rem Initialize Batch side interface the first time
if "%~1" equ "interface" goto :interface

rem Empty pipe file
cd . > pipeFile.txt

echo Select an option:

rem Start HTA-Batch interface
mshta.exe "%~F0" >> pipeFile.txt  |  "%~F0" interface < pipeFile.txt
PAUSE
del pipeFile.txt
goto :EOF


:interface

set "HTAreply="
set /P "HTAreply="
if "%HTAreply%" equ "" goto interface

if "%HTAreply%" == "1" PowerShell 'Add user here...'
if "%HTAreply%" == "2" PowerShell 'Remove user here...'

if not "%HTAreply%" == "3" goto interface
echo End of HTA window

goto :EOF

-->


<HTML>
<HEAD>
<HTA:APPLICATION SCROLL="no" SYSMENU="no" >

<TITLE>HTA Buttons</TITLE>
<SCRIPT language="JavaScript">
window.resizeTo(374,100);

var fso = new ActiveXObject("Scripting.FileSystemObject");
function replyHTA(reply){
   fso.GetStandardStream(1).WriteLine(reply);
}

</SCRIPT>
</HEAD>
<BODY>
   <button onclick="replyHTA(1);">Add User</button>
   <button onclick="replyHTA(2);">Remove User</button>
   <button onclick="replyHTA(3);window.close();">Exit</button>
</BODY>
</HTML>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...